32

例如,在:

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

我需要放吗?

4

3 回答 3

32

它定义了文档的 XML 命名空间。你应该把它,否则标签<RelativeLayout>不能被解析器识别。

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

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

tools:context=".SomeActivity"
于 2013-03-12T17:48:18.247 回答
5

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

它说

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

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

于 2017-06-21T18:27:53.867 回答
1

事实上,当你这样做时:

<RelativeLayout android:id> </RelativeLayout>

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

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

于 2013-03-12T18:18:21.940 回答