Android XML布局中xmlns:tools的含义是什么?

例如,在:

<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" > ... 

我需要把它吗?

Solutions Collecting From Web of "Android XML布局中xmlns:tools的含义是什么?"

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

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

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

 tools:context=".SomeActivity" 

其实,当你这样做的时候:

 <RelativeLayout android:id> </RelativeLayout> 

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

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

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

它说

Android Studio支持工具名称空间中的各种XML属性,这些属性支持devise时function(例如在片段中显示哪种布局)或编译时行为(例如应用于XML资源的缩小模式)。 构build应用程序时,构build工具将删除这些属性,以便对APK大小或运行时行为没有影响。

即工具名称空间有助于devise用户界面,所有具有前缀“工具”的属性将在构build时被删除。