Android布局文件中的“工具:上下文”是什么?

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

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

它甚至如何知道写在那里的活动的确切路径? 它是否在清单中查看应用程序的包?

它仅限于扩展上下文的类还是仅限于活动? 它可用于ListView项目等?


这很可能是UI编辑器用于呈现布局的活动(它将根据活动找到正确的主题)。 这里记录(在文章的中间;订阅该页面以保持最新)。


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

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

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

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

是的,上面列出的尼古拉链接显示了新配置选择器的外观和工作原理

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


根据Android工具项目网站:

工具:上下文

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

<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&Eclipse,Lint中的布局编辑器

链接地址: http://www.djcxy.com/p/16227.html

上一篇: What's "tools:context" in Android layout files?

下一篇: What is an Android PendingIntent?