从最近ADT的新版本开始,我注意到布局XML文件上的这个新属性,例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" />

“工具:上下文”的用途是什么?

它怎么知道写在那里的活动的确切路径?它会查看manifest里面的应用程序包吗?

它局限于扩展Context的类还是仅仅局限于活动?它对ListView项目等有用吗?


当前回答

该属性基本上是布局上方“Associated Activity”选择的持久性。在运行时,布局总是与一个活动相关联。当然,它可以与不止一个有关,但至少是一个。在工具中,我们需要知道这个映射(在运行时发生在另一个方向上;一个活动可以调用setContentView(layout)来显示一个布局)以驱动某些特性。

现在,我们只使用它来做一件事:为布局选择正确的主题(因为清单文件可以为活动注册主题,一旦我们知道与布局相关的活动,我们就可以为布局选择正确的主题)。在未来,我们将使用它来驱动其他特性——例如呈现操作栏(与活动相关联),添加onClick处理程序的地方,等等。

这是一个tools: namespace属性的原因是,这只是一个供工具使用的设计时映射。布局本身可以被多个活动/片段等使用。我们只是想给你一个选择设计时绑定的方法这样我们就可以展示正确的主题;你可以随时改变它,就像你可以改变我们的listview和fragment绑定,等等。

(这里是完整的变更集,其中有更多的细节)

是的,上面列出的链接Nikolay展示了新的配置选择器的外观和工作方式

还有一点:“tools”名称空间是特殊的。android打包工具知道忽略它,所以这些属性都不会打包到APK中。我们将它用于布局中的额外元数据。例如,它也是抑制lint警告的属性存储的地方——作为工具:忽略。

其他回答

这是UI编辑器用来渲染布局预览的工具。它被记录在这里:

此属性声明默认情况下该布局与哪个活动相关联。这使得编辑器或布局预览中需要活动知识的功能成为可能,例如预览中的布局主题应该是什么,以及当您从快速修复中制作这些时,在哪里插入onClick处理程序

“tools:context”是设计属性之一,可以在开发框架中用XML创建布局。此属性用于向开发框架显示用于实现布局的活动类。使用“tools:context”,Android Studio自动为预览选择必要的主题。

如果你想了解更多关于Android应用程序开发的其他属性和有用工具,可以看看这篇评论:http://cases.azoft.com/4-must-know-tools-for-effective-android-development/

该属性基本上是布局上方“Associated Activity”选择的持久性。在运行时,布局总是与一个活动相关联。当然,它可以与不止一个有关,但至少是一个。在工具中,我们需要知道这个映射(在运行时发生在另一个方向上;一个活动可以调用setContentView(layout)来显示一个布局)以驱动某些特性。

现在,我们只使用它来做一件事:为布局选择正确的主题(因为清单文件可以为活动注册主题,一旦我们知道与布局相关的活动,我们就可以为布局选择正确的主题)。在未来,我们将使用它来驱动其他特性——例如呈现操作栏(与活动相关联),添加onClick处理程序的地方,等等。

这是一个tools: namespace属性的原因是,这只是一个供工具使用的设计时映射。布局本身可以被多个活动/片段等使用。我们只是想给你一个选择设计时绑定的方法这样我们就可以展示正确的主题;你可以随时改变它,就像你可以改变我们的listview和fragment绑定,等等。

(这里是完整的变更集,其中有更多的细节)

是的,上面列出的链接Nikolay展示了新的配置选择器的外观和工作方式

还有一点:“tools”名称空间是特殊的。android打包工具知道忽略它,所以这些属性都不会打包到APK中。我们将它用于布局中的额外元数据。例如,它也是抑制lint警告的属性存储的地方——作为工具:忽略。

这是最好的解决方案: https://developer.android.com/studio/write/tool-attributes

这是设计属性 我们可以像这样在XML中设置活动上下文

tools:context=".activity.ActivityName"

适配器:

tools:context="com.PackegaName.AdapterName"

单击标记的图标可以导航到java类 工具有更多的功能

tools:text=""
tools:visibility:""
tools:listItems=""//for recycler view 

etx

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    //more views

</androidx.constraintlayout.widget.ConstraintLayout>

在上面的代码中,工具:context的基本需求是默认情况下告诉布局文件与哪个活动或片段相关联。因此,您可以使用与Manifest文件中使用的相同的点前缀指定活动类名。

通过这样做,Android Studio将自动为预览选择必要的主题,你不必手动进行预览设置。我们都知道一个布局文件可以与几个活动相关联,但是主题是在Manifest文件中定义的,这些主题与您的活动相关联。因此,通过在布局文件中添加tools:context, Android Studio预览将自动为你选择必要的主题。