从最新的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" />
什么是“工具:上下文”用于?
它怎么知道写在那里的活动的确切路径?它是否在清单中查看应用程序包?
是否仅限于扩展Context或仅限于活动的类?它可用于ListView项目等吗?
答案 0 :(得分:407)
这是工具UI编辑器用于呈现布局预览的活动。记录在案here:
此属性声明默认情况下此布局与哪个活动相关联。这使得编辑器或布局预览中的功能需要活动知识,例如布局主题在预览中应该是什么以及当您从quickfix中进行插入时插入onClick处理程序的位置
答案 1 :(得分:368)
该属性基本上是布局上方“关联活动”选择的持久性。在运行时,布局始终与活动相关联。它当然可以与多个,但至少一个相关联。在该工具中,我们需要了解这种映射(在运行时发生在另一个方向;一个活动可以调用setContentView(布局)来显示布局)以便驱动某些功能。
现在,我们只将它用于一件事:选择正确的主题以显示布局(因为清单文件可以注册用于活动的主题,一旦我们知道与布局相关的活动,我们可以选择正确的主题来显示布局)。将来,我们将使用它来驱动其他功能 - 例如渲染操作栏(与活动相关联),添加onClick处理程序的位置等。
这是一个工具:namespace属性的原因是这只是工具使用的设计时映射。布局本身可以被多个活动/片段等使用。我们只想给你一种方法来选择一个设计时绑定,以便我们可以显示正确的主题;您可以随时更改它,就像您可以更改我们的列表视图和片段绑定等。
(这是完整的变更集,其中包含this)
的更多详细信息是的,上面列出的the link Nikolay显示了新配置选择器的外观和工作原理
还有一件事:“tools”命名空间很特别。 android打包工具知道忽略它,因此这些属性都不会被打包到APK中。我们将它用于布局中的额外元数据。它也是存储抑制lint警告的属性的地方 - 作为工具:忽略。
答案 2 :(得分:88)
工具:上下文
此属性通常在布局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&amp; amp;中的布局编辑器Eclipse,Lint
答案 3 :(得分:10)
tools: context = "activity name"
它不会打包到当前布局文件集中的apk
。只ADT
布局编辑器中设置相应的渲染上下文,在渲染上下文时显示当前布局是活动名称对应于活动,如果manifest
文件中的活动设置了主题,则ADT
布局编辑器将根据Theme.Means呈现您当前的布局,如果您设置{{1}设置主题。 Light(另一个),然后你在视觉布局管理器中看到o后台控制应该是什么主题。光看起来像。只是告诉你你所看到的是你得到的结果。
举一个简单的
MainActivity
,例如,更多图片,方便进一步了解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" />
1采用TextView
,并使用android: text
2中的tools:text
,布局编辑器右侧将显示TextView
,sample name1
两种字体,如果在运行代码编译后生成sample name2
,终端仅显示apk
,则不会显示sample name1
字样。您可以尝试运行,看看效果如何。
1. sample name2
它不会被打包到tools: context = "activity name"
(理解:相当于这个被评论,编译无效。)
2.Only apk
布局编辑器(即模拟器右侧的上图标)在当前布局文件中设置相应的渲染上下文,渲染上下文时当前XML的布局是活动名称对应于活动,如果清单文件中的活动设置了主题,则ADT
布局编辑器将根据Theme.Means呈现当前布局,如果您设置ADT
设置主题。 Light也可以是(其他)。(理解:你添加了MainActivity
,XML布局是渲染指定的活动,在清单文件中建立一个主题,如上图所示右模拟器主题样式也将遵循主题对应的更改。)
综上所述,这些属性主要针对上面正确的工具,模拟器调试时间显示状态,编译不起作用,
答案 4 :(得分:7)
“tools:context”是可以在开发框架中促进XML格式创建的设计属性之一。此属性用于向开发框架显示为实现布局而选择的活动类。使用“工具:上下文”,Android Studio会自动为预览选择必要的主题。
如果您想了解有关Android应用开发的其他一些属性和有用工具的更多信息,请查看以下评论:http://cases.azoft.com/4-must-know-tools-for-effective-android-development/
答案 5 :(得分:1)
这是最好的解决方案: https://developer.android.com/studio/write/tool-attributes
这是设计属性 我们可以在
之类的xml中设置活动上下文public function up()
{
Schema::table('allestates', function (Blueprint $table) {
$table->timestamps();
});
}
适配器:
public $timestamps = true;
protected $table = "allestates";
单击标记的图标,您可以导航到Java类 和工具具有更多功能,例如
tools:context=".activity.ActivityName"
etx
答案 6 :(得分:0)
tools:context=".MainActivity"
thisline在xml文件中使用,表示使用哪个java源文件来访问此xml文件。
它意味着显示特定java文件的xml预览。
答案 7 :(得分:0)
<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的基本需求是告诉布局文件默认与哪个活动或片段相关联。因此,您可以使用清单文件中使用的点前缀指定活动类名称。
这样做,Android Studio将自动为预览选择必要的主题,而您不必手动进行预览设置。众所周知,布局文件可以与多个活动相关联,但是主题是在清单文件中定义的,并且这些主题与您的活动相关联。因此,通过在布局文件中添加tools:context,Android Studio预览版将自动为您选择必要的主题。
答案 8 :(得分:0)
此属性有助于最佳了解与布局相关的活动。当您必须使用QuickFix在视图上添加onClick处理程序时,这也很有用。
# print(df)
Stuff Price Currency
0 Shampoo $0.6 USD
1 Soap €0.19 EURO
2 Pen ¥0.1 JPY