当我们在Android中编写基于XML的布局时,我们使用字符串"xmlns:android="http://schemas.android.com/apk/res/android""。
从我所读的书籍中可以得知这是一个命名空间,但为什么要使用它呢?这个链接甚至不存在。那么它有什么用处呢?
当我们在Android中编写基于XML的布局时,我们使用字符串"xmlns:android="http://schemas.android.com/apk/res/android""。
从我所读的书籍中可以得知这是一个命名空间,但为什么要使用它呢?这个链接甚至不存在。那么它有什么用处呢?
来自developer.android.com
xmlns:android
定义了Android命名空间。该属性应始终设置为"http://schemas.android.com/apk/res/android"。
xmlns:android用于标识此xml用于Android,而非其他功能。
命名空间唯一地标识代码/库。如果我编写一个使用与Android API相同名称和格式的API,则区分我的API和Android API的唯一方法是使用Android命名空间或使用我的API命名空间。
您可能需要阅读一些关于XML的通用知识。 w3.org的XML文档 可能是您最好的选择。
总的来说,命名空间(namespace)的作用是为了避免元素名称之间的冲突。
例如,如果我创建了一个定义了元素<person>
的XML模式(schema),而我的朋友创建了一个名为<person>
的完全不同的元素的单独的XML模式(schema),那么我们可能会发生冲突。如果我尝试在XML文件中引用这两个元素,就没有办法知道哪个是哪个。然而,如果我们使用命名空间,例如myNamespace:person 就显然不同于 myFriendsNamespace:person。
定义命名空间的标准方式是使用URI,这就是为什么在Android定义中看到URI的原因。这并不一定意味着该模式存在于该位置,而是意味着URI是该命名空间的唯一名称。
由于您将在XML中引用Android定义的键。 因此,资源将使用命名空间标识键,这就是为什么我们在每个Android XML文件中定义命名空间的原因,例如:"xmlns:android="http://schemas.android.com/apk/res/android"
现在,在XML中,您可以使用android标记引用键,如下所示:
<FrameLayout
android:id="@+id/id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color">
确实,该链接不存在。但我们使用的字符串是用于声明命名空间的... 在XML中,命名空间用于避免命名冲突。 您可以参考此链接以获得更多澄清 http://www.w3schools.com/XML/xml_namespaces.asp