Android XML布局中的xmlns:tools是啥意思?

Posted

技术标签:

【中文标题】Android XML布局中的xmlns:tools是啥意思?【英文标题】:What is the meaning of xmlns:tools in Android XML layout?Android XML布局中的xmlns:tools是什么意思? 【发布时间】:2013-02-28 09:19:36 【问题描述】:

例如,在:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_ >
...

我需要放吗?

【问题讨论】:

在What's “tools:context” in Android layout files?中有一些很好的信息 【参考方案1】:

它定义了文档的 XML 命名空间。你应该把它,否则像&lt;RelativeLayout&gt;这样的标签不能被解析器识别。

命名空间是 XML 文档包含来自不同供应商的标签的一种方式。通过使用 xmlns 属性声明,默认情况下,您使用的是此处定义的 XML 元素:http://schemas.android.com/apk/res/android(请注意,此链接已损坏 - this discussion 解释了原因)。

您还声明了额外的命名空间tools,这不是您的默认命名空间,因此在引用其中定义的元素或属性时,您必须添加tools前缀,例如:

tools:context=".SomeActivity"

【讨论】:

@Sam - 这是因为 Google 没有公开它。 @Sam - 请参阅 this discussion 了解为什么这些模式不可用。 你做了忍者编辑吗?我发誓这是一个不同的链接附加到不同的句子......也许我只是划出来了。我同意,架构不需要是有效链接,只要一致即可。 @Sam - 我做了,用讨论的链接更新答案(我还修复了一个链接) - 但确切的链接并不重要,因为所有来自 Android 的 xmlns 都没有定义。 @kamituel 讨论的链接也失效了。【参考方案2】:

以下是来自 Android 开发门户的有用链接:https://developer.android.com/studio/write/tool-attributes.html

它说

Android Studio 支持工具命名空间中的各种 XML 属性,这些属性可启用设计时功能(例如在片段中显示哪种布局)或编译时行为(例如将哪种收缩模式应用于您的 XML 资源) .当您构建应用时,构建工具会移除这些属性,因此不会影响您的 APK 大小或运行时行为。

即tools 命名空间有助于设计 UI,所有带有前缀 'tools' 的属性将在构建时被删除。

【讨论】:

【参考方案3】:

事实上,当你这样做时:

<RelativeLayout android:id> </RelativeLayout>

xml 将调用 http://schemas.android.com/apk/res/android:id 而不是调用 android:id。它只是声明您可以在 xml 中使用的所有属性和视图的页面。

这里有一个解释。 http://www.w3schools.com/xml/xml_namespaces.asp

【讨论】:

以上是关于Android XML布局中的xmlns:tools是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Android-PullToRefresh开源项目的使用

SharedPreferences类的使用

中心进度条 [重复]

Android 布局 xml 中的注释

FrameLayout 高度与父级不匹配

布局 xml 文档中的 Android“工具”命名空间