提问人:android developer 提问时间:6/18/2012 最后编辑:R. Zagórskiandroid developer 更新时间:1/11/2023 访问量:274763
Android 布局文件中的“tools:context”是什么?
What's "tools:context" in Android layout files?
问:
从最近新版本的 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" />
“tools:context”是做什么用的?
它如何知道写入那里的活动的确切路径?它是否在清单中查看应用的包?
它是否仅限于扩展 Context 的类或仅扩展活动?它是否可用于 ListView 项等?
答:
这是 UI 编辑器工具用于呈现布局预览的活动。记录如下:
默认情况下,此属性声明此布局与哪个活动相关联。这将启用编辑器或布局预览中需要了解活动的功能,例如预览中的布局主题,以及从快速修复创建这些处理程序时插入 onClick 处理程序的位置
评论
Activity
扩展,所以不确定你的意思?它可能确实做得更多,如果您有兴趣,请查看源代码,它是可用的。我不知道任何细节。Context
该属性基本上是布局上方“关联活动”选择的持久性。在运行时,布局始终与活动相关联。当然,它可以与多个关联,但至少可以关联一个。在工具中,我们需要了解这种映射(在运行时发生在另一个方向;活动可以调用setContentView(layout)来显示布局)以驱动某些功能。
现在,我们只将它用于一件事:选择要为布局显示的正确主题(因为清单文件可以注册要用于活动的主题,一旦我们知道与布局关联的活动,我们就可以选择正确的主题来显示布局)。将来,我们将使用它来驱动其他功能 - 例如呈现操作栏(与活动关联)、添加 onClick 处理程序的位置等。
之所以是 tools: namespace 属性,是因为这只是供工具使用的设计时映射。布局本身可以由多个活动/片段等使用。我们只是想为您提供一种选择设计时绑定的方法,例如,我们可以显示正确的主题;您可以随时更改它,就像您可以更改我们的 ListView 和 fragment 绑定等一样。
(这是完整的变更集,其中包含有关此的更多详细信息)
是的,上面列出的链接 Nikolay 显示了新配置选择器的外观和工作方式
还有一件事:“tools”命名空间很特殊。android 打包工具知道忽略它,因此这些属性都不会打包到 APK 中。我们正在将它用于布局中的额外元数据。例如,它也是存储抑制 lint 警告的属性的地方——作为 tools:ignore。
评论
tools:context
TextView
工具:上下文
此属性通常在布局 XML 文件中的根元素上设置,并记录布局与哪个活动相关联(在设计时,因为显然一个布局可以由多个布局使用)。例如,布局编辑器将使用它来猜测默认主题,因为主题是在清单中定义的,并且与活动相关联,而不是布局。可以使用与清单中相同的点前缀来仅指定活动类,而不使用完整的应用程序包名称作为前缀。
<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
“tools:context”是设计属性之一,可以方便在开发框架中以XML格式创建布局。此属性用于向开发框架显示为实现布局而选择的活动类。使用“tools:context”,Android Studio 会自动为预览选择必要的主题。
如果您想了解更多关于 Android 应用程序开发的其他一些属性和有用工具的信息,请查看此评论: http://cases.azoft.com/4-must-know-tools-for-effective-android-development/
tools:context=".MainActivity"
此行用于 XML 文件,它指示使用哪个 Java 源文件访问此 XML 文件。
这意味着显示 THE XML 预览 对于特定的 Java 文件。
1.描述
tools: context = "activity name"
它不会被打包到 .只有 Layout Editor 在你当前的 Layout 文件中设置了对应的渲染上下文,显示你当前的 Layout 在渲染上下文中是活动名称对应的 Activity,如果 Activity 在文件中设置了一个 Theme,那么 Layout Editor 会根据你当前的 Layout 来渲染你当前的 Theme。光 (另一个),然后你看到 在可视化布局管理器 o 背景控制 应该是主题。光的样子。只有向你展示你所看到的,你得到的结果就是你得到的结果。apk
ADT
manifest
ADT
MainActivity
有的人看到会明白一些,有的人看到也有不知道,我再补充几句解释:
2.样品
举个简单的,比如多一些图片,方便进一步了解
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" />
TextView
1.采用了,并使用了2中的,在布局编辑器的右侧会显示两种字体,如果运行代码后进行编译、生成,终端只显示,不显示文字。你可以试着跑,看看效果如何。android: text
tools:text
TextView
sample name1
sample name2
apk
sample name1
sample name2
3.具体说明
1.它不会被打包成(理解:相当于这个被注释,编译没有效果。tools: context = "activity name"
apk
2.只有 Layout Editor(即模拟器右侧的上面图标)在当前 Layout 文件中设置了对应的渲染上下文,当前 XML 的 Layout 在渲染上下文中是活动名称对应的活动,如果 manifest 文件中的活动设置了一个 Theme,那么 Layout Editor 会根据该 Theme 来渲染你当前的 Layout。光也可以是(其他)。(理解:你添加了,XML布局正在渲染指定的活动,在manifest文件中建立了一个Theme,上图右图模拟器的主题样式也会跟随对应的主题变化。ADT
ADT
MainActivity
tools: context = "activity name"
4.总结
综上所述,这些属性主要针对上面的正确工具,模拟器调试时显示状态,而编译不起作用,
这是最好的解决方案: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>
在上面的代码中,tools:context 的基本需求是告诉布局文件默认与哪个 Activity 或 fragment 相关联。因此,您可以使用清单文件中使用的相同点前缀来指定活动类名称。
这样一来,Android Studio 将自动为预览选择必要的主题,您无需手动进行预览设置。众所周知,布局文件可以与多个活动相关联,但主题在清单文件中定义,并且这些主题与您的活动相关联。因此,通过在布局文件中添加 tools:context,Android Studio 预览版会自动为您选择必要的主题。
此属性有助于最好地了解与布局关联的活动。当您必须使用 QuickFix 在视图上添加 onClick 处理程序时,这也很有用。
tools:context=".MainActivity"
默认情况下,此属性声明此布局与哪个活动相关联。这将启用编辑器或布局预览中需要了解活动的功能。
评论
适用于:任何根<View>
使用者:Lint,Android Studio 布局编辑器
默认情况下,此属性声明此布局与哪个活动相关联。这将启用编辑器或布局预览中需要了解活动的功能,例如预览中的布局主题,以及从快速修复中插入 onClick 处理程序时插入这些处理程序的位置(图 2)。
图2.仅当设置了 tools:context 时,onClick 属性的快速修复才有效
您可以使用与清单文件中相同的点前缀(不包括完整的包名称)来指定活动类名称。例如:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
其他答案缺少的一件事是任何类的上下文部分,它可以与任何扩展上下文的类一起使用。
tools:context 是 Android Studio 和 Android Gradle 插件中引入的一个属性。它在布局文件中用于指定将使用布局的上下文。
tools 命名空间用于指定在运行时未使用的属性,但 Android Studio 布局编辑器和其他工具可以使用这些属性,以便您更好地控制布局的呈现方式。tools:context 属性允许您指定表示布局上下文的 Java 类的完全限定名称。布局编辑器使用它来确定在编辑器中呈现布局时应将哪些主题和属性应用于布局。
它正在查看清单内的应用包。它用于知道写入其中的活动的确切路径。
tools:context 属性可以与扩展 Context 的任何类一起使用,例如 Activity、Service 或 Application。但是,它最常用于 Activity 类,因为它们是大多数应用程序的主要入口点。
context 属性不仅限于活动,它还可用于任何扩展上下文的 java 类。它可以用于任何基于上下文的类,例如在 ListView 项中,但它主要用于活动。
评论