Android布局XML文档中的“tools”命名空间

35

根据这里的问题,

Android布局文件中的"tools:context"是什么?

最近我的布局中出现了“tools”命名空间引用(xmlns:tools =“http://schemas.android.com/tools”),我想了解更多。原帖只描述了“tools:context”属性,但我也注意到当我为ListView指定预览布局项时,“tools:listitem”属性的使用也会出现,例如:

<ListView
    android:id="@+id/lvCustomer"
    tools:listitem="@layout/customer_list_item" >
</ListView>

还有更多的元素吗?

我进入这个“工具”命名空间的原因是,我希望在使用eclipse的布局设计器时能够拥有“仅预览”的文本(即在TextView或EditText中)。

目前,我为了预览布局而分配了“text”或“hint”属性...但是每次我都要记得在代码中清除预览值。

理想情况下,不应该像这样:

<string name="preview_customer_name">Billy Bob's Roadhouse Pub</string>

...

<TextView
    android:id="@+id/tvCustomerName"
    android:text="@string/preview_customer_name"
</TextView>

我有一个类似于以下的东西:

<TextView
    android:id="@+id/tvCustomerName"
    tools:previewText="@string/preview_customer_name"
</TextView>

谢谢。


2
这可以在自定义语言环境下使用@string资源来完成吗? - bjdodson
@bjdodson - 这解决了我的问题,并且对于我的 @string/preview_text 功能非常有效。我只是创建了一个新的字符串资源,选择了一个不寻常的语言变体,并将所有的 @string/preview_text_blah 元素放在那里。然后我可以在预览模式下轻松切换到该本地。感谢您的帮助。 - J Webb
4个回答

25

2
这个计划会不会被纳入Eclipse/ADT中呢? - Joe
有没有类似于Spinner的东西? - rekire
它应该可以——难道不工作吗?(代码中有支持它的内容,但我们很长时间没有碰过它,所以可能被其他东西意外破坏了。) - Tor Norbye

14

把它们看作是设计时帮助程序。它们不会在运行时实际渲染视图时被处理。

例如,当在Android Studio上进行布局设计时,您想要设置某个视图的背景,以便可以清晰地区分该特定视图。因此,您通常会使用:

android:background="@color/<some-color>"

现在的风险是有时候我们会忘记删除这个颜色,然后它就会被打包到apk中。 相反,你可以按照以下方式操作:

tools:background="@color/<some-color>"

这些更改仅适用于Android Studio,并且永远不会传输到APK中。

同时,请查看http://tools.android.com/tech-docs/tools-attributes以获取更多选项。


8

当您在图形布局中设置对象时,会发现tool属性。

Listview(图形模式) -> 右键单击 -> 预览列表内容 -> 选择布局...

产生的结果:

tools:listitem="@layout/customer_list_item"

2
请参见下面的布局XML。有两个使用的命名空间"xmlns:android"和"xmlns:tools"。
当开发人员想要定义仅在预览或设计时使用的占位符内容时,会使用工具命名空间。编译应用程序时,将删除工具命名空间。
因此,在下面的代码中,我想显示仅在设计时可见的占位符图像(image_empty),并且在应用程序启动时将显示实际图像image1
请点击enter image description here查看示例图片。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接