布局 xml 文档中的 Android“工具”命名空间
Posted
技术标签:
【中文标题】布局 xml 文档中的 Android“工具”命名空间【英文标题】:Android "tools" namespace in layout xml documentation 【发布时间】:2012-07-23 09:20:42 【问题描述】:根据这里的问题,
What's "tools:context" in android layout files?
“工具”命名空间引用 (xmlns:tools="http://schemas.android.com/tools") 最近开始出现在我的布局中,我想了解更多。原始帖子仅描述了“工具:上下文”属性,但我也注意到当我为列表视图指定预览布局项时出现的“工具:列表项”属性的用法,即
<ListView
android:id="@+id/lvCustomer"
tools:listitem="@layout/customer_list_item" >
</ListView>
还有更多元素吗?
将我带到这个“工具”命名空间的原因是我希望在 Eclipse 中使用布局设计器时能够拥有“仅预览”文本(即在 TextView 或 EditText 中)。
目前,我在安排布局时为预览文本分配了“文本”或“提示”属性......但我总是必须记住从代码中清除预览值。
理想情况下,而不是
<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>
谢谢-
【问题讨论】:
这可以使用自定义语言环境下的@string 资源来完成吗? @bjdodson - 这解决了我的问题并且非常适合我的@string/preview_text
功能。我刚刚创建了一个新的字符串资源并选择了一个不寻常的语言变体并将我所有的 @string/preview_text_blah
元素放在那里。然后我可以在预览模式下轻松切换到本地。感谢您的帮助。
【参考方案1】:
我们刚刚在 Android Studio 0.2.11 中添加了对此类设计时属性的支持。请参阅http://tools.android.com/tips/layout-designtime-attributes 了解更多信息。
【讨论】:
是否有任何计划让它进入 Eclipse/ADT? Spinners 有类似的东西吗? 它应该——它不起作用吗? (那里有支持它的代码,但我们很长时间没有接触它,所以它可能不小心被其他东西破坏了。)【参考方案2】:仅将它们视为设计时助手。它们不会在运行时的实际视图渲染中得到处理。
例如,您想在使用 android studio 时在布局设计中设置某些视图的背景,以便您可以清楚地区分该特定视图的位置。所以您通常会这样做
android:background="@color/<some-color>"
现在的风险是,有时我们会忘记删除该颜色,然后它会以 apk 的形式发送。 相反,您可以执行以下操作:
tools:background="@color/<some-color>"
这些更改将是 android studio 本地的,永远不会转移到 apk。
还可以查看http://tools.android.com/tech-docs/tools-attributes 了解更多选项。
【讨论】:
【参考方案3】:在图形布局中设置对象时会发现tool
属性。
Listview(图形模式)->右键->预览列表内容->选择布局...
产生:
tools:listitem="@layout/customer_list_item"
【讨论】:
【参考方案4】:请参阅下面的布局 XML。有 2 个命名空间在使用“xmlns:android”和“xmlns:tools”。
Tools 命名空间在开发人员想要定义仅在预览或设计时使用的占位符内容时使用。当我们编译应用程序时,工具命名空间被删除。
所以在下面的代码中,我想显示仅在设计时可见的占位符图像 (image_empty),而 image1 将显示实际图像在应用启动时显示
【讨论】:
以上是关于布局 xml 文档中的 Android“工具”命名空间的主要内容,如果未能解决你的问题,请参考以下文章
databinding错误Error:(11) Error parsing XML: duplicate attribute