例如,在:
<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" >
...
我需要把它吗?
答案 0 :(得分:25)
它定义了文档的XML命名空间。你应该把它放进去,否则解析器就无法识别像<RelativeLayout>
这样的标签。
命名空间是XML文档包含来自不同供应商的标记的一种方式。通过使用您声明的xmlns
属性,默认情况下,您使用的是此处定义的XML元素:http://schemas.android.com/apk/res/android(请注意,此链接已损坏 - this discussion解释原因)。
您还声明了其他名称空间tools
,它不是您的默认名称空间,因此在引用那里定义的元素或属性时,您必须添加tools
前缀,例如:
tools:context=".SomeActivity"
答案 1 :(得分:1)
以下是来自Android开发门户的有用链接:https://developer.android.com/studio/write/tool-attributes.html
它说
Android Studio支持工具命名空间中的各种XML属性,这些属性支持设计时功能(例如片段中显示的布局)或编译时行为(例如应用于XML资源的缩小模式) 。构建应用程序时,构建工具会删除这些属性,因此不会影响您的APK大小或运行时行为。
即。 tools命名空间有助于设计UI,所有带有前缀'tools'的属性都将在构建时删除。
答案 2 :(得分:0)
事实上,当你这样做时:
<RelativeLayout android:id> </RelativeLayout>
而不是调用android:id,xml将调用http://schemas.android.com/apk/res/android:id。它只是声明可以在xml中使用的所有属性和视图的页面。