提问



从最新的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" />


什么是工具:上下文用于?


它怎么知道写在那里的Activity的确切路径?它是否在清单中查看应用程序包?


它仅限于扩展Context或仅扩展Activity的类吗?它可用于ListView项目等吗?

最佳参考


这很可能是工具UI编辑器用于渲染布局的Activity(它将根据Activity找到正确的主题)。这是在这里记录的(在文章的中间;订阅该页面以保持最新)。[28]

其它参考1


该属性基本上是布局上方关联Activity选择的持久性。在运行时,布局始终与Activity相关联。它当然可以与多个,但至少一个相关联。在该工具中,我们需要了解这种映射(在运行时发生在另一个方向;一个Activity可以调用setContentView(布局)来显示布局)以驱动某些功能。


现在,我们只将它用于一件事:选择正确的主题以显示布局(因为清单文件可以注册用于Activity的主题,并且一旦我们知道相关的Activity通过布局,我们可以选择正确的主题来显示布局。。将来,我们将使用它来驱动其他功能 - 例如渲染操作栏(与Activity相关联),添加的地方onClick处理程序等


这是一个工具:namespace属性的原因是这只是工具使用的设计时映射。布局本身可以被多个Activity/片段等使用。我们只想给你一种方法来选择一个设计时绑定,以便我们可以显示正确的主题;您可以随时更改它,就像您可以更改我们的列表视图和片段绑定等。


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


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


还有一件事:工具命名空间是特殊的。 android打包工具知道忽略它,因此这些属性都不会被打包到APK中。我们在布局中使用它来获取额外的元数据。它也是存储抑制lint警告的属性的地方 - 作为工具:忽略。

其它参考2


根据Android工具项目网站:[31]


工具:上下文


此属性通常在布局XML文件的根元素上设置,并记录布局与哪个Activity相关联(在设计时,因为显然布局可以由多个布局使用)。例如,布局编辑器将使用它来猜测默认主题,因为主题在Manifest中定义并且与Activity相关联,而不是与布局相关联。您可以使用与清单中相同的点前缀来指定Activity类,而不使用完整的应用程序包名称作为前缀。


<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">  


使用者:Studio& amp;中的布局编辑器Eclipse,Lint

其它参考3


tools:context是设计属性之一,可以在开发框架中促进XML的布局创建。此属性用于显示开发框架为实现布局而选择的Activity类。使用工具:上下文,Android Studio会自动为预览选择必要的主题。


如果您想了解有关Android应用开发的其他一些属性和有用工具的更多信息,请查看以下评论​​:http://cases.azoft.com/4-must-know-tools-for-effective-android -Development/[32]

其它参考4


1.Description



tools: context = "activity name"它不会打包到apk。只有ADT布局编辑器在你当前的布局文件中设置相应的渲染上下文,在渲染中显示你当前的布局上下文是Activity名称对应的对于Activity,如果manifest文件中的Activity设置了主题,则ADT布局编辑器将根据Theme.Means呈现当前布局,如果您设置MainActivity设置主题。光(另一个),然后你在视觉布局管理器中看到o背景控制应该是什么主题。光看起来像。只是告诉你你看到的是你得到的结果。


有些人看到会理解一些,有些人看到也不知道,我会添加几句解释:


2.Sample




  拿一个简单的tools:text,例如,一些更多的图像,方便进一步理解tools:context



<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="sample name1" />

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="sample name2" />


[33]



  TextView 1采用android: text,并使用TextView中的tools:text 2,在布局编辑器的右侧将显示sample name1,[[sample name2两种字体,如果运行代码后编译,生成apk,终端只显示sample name1,不显示sample name2字样。你可以尝试运行,看看效果如何。



3.具体说明



1. tools: context = "activity name"它不会被打包到apk中(理解:相当于这个被评论,编译没有效果。)


2.Only ADT布局编辑器(即模拟器右侧的上述图标)在当前布局文件中设置相应的渲染上下文,当前XML的布局在渲染上下文时是Activity名称对应的对于Activity,如果清单文件中的Activity设置了主题,则ADT布局编辑器将根据Theme.Means呈现您当前的布局,如果您将MainActivity设置为主题。 Light也可以(其他)。(理解:你添加了tools: context = "activity name",XML布局是渲染指定的Activity,在清单文件中建立一个主题,右上图模拟器主题样式也会跟随主题对应的变化。)


4.summary



综上所述,这些属性主要针对上面正确的工具,模拟器调试时间显示状态,编译不起作用,

其它参考5


tools:context=".MainActivity"
thisline在xml文件中使用,表示使用哪个java源文件来访问此xml文件。
它意味着显示特定java文件的xml预览。