2011-05-02 57 views
23

当我们在Android中编写基于xml的布局时,我们使用字符串“xmlns:android =”http://schemas.android.com/apk/res/android“。为什么我们在android xml文件中指定命名空间?

从我读过的书中可以看出,这是一个命名空间,但我们用这个为什么的链接根本不存在什么是使用这个

回答

18

从developer.android.com

的xmlns:??机器人

定义Android命名空间,该属性应该始终设置为“http://schemas.android.com/apk/res/android”。

xmlns:android是用于标识这个xml用于android,而不是用于其他功能。

命名空间唯一标识代码/库。如果我编写一个使用所有相同名称的api,例如android api,区分我的api和android api的唯一方法是使用android命名空间或我的。

您可以进一步参考http://en.wikipedia.org/wiki/XML_namespace

+0

我的意思是,这是命名空间的*定义*,但它不涉及* why *。把它这样,如果我把名字空间作为空白,没有任何工作。为什么? – bharal 2018-02-28 23:12:21

1

这是事实,该链接不exists..But我们正在使用的申请宣告该命名空间... 在XML中,命名空间来避免命名冲突的字符串。 您可以参考此链接更多的澄清 http://www.w3schools.com/XML/xml_namespaces.asp

15

您可能需要做一些XML一般阅读。 w3.org's XML documentation可能是你最好的。

一般来说,使用名称空间是为了避免元素名称之间发生冲突。例如,如果我创建了定义元素<person>的XML架构,并且我的朋友创建了一个单独的XML架构,该XML架构定义了一个完全不同的元素,该元素也恰好被命名为<person>,我们可能会发生冲突。如果我试图在XML文件中引用这两个元素,那么将无法确定哪个元素是哪个元素。但是,如果我们使用名称空间,myNamespace:person明显不同于myFriendsNamespace:person。

定义名称空间的标准是使用URI,这就是您在Android定义中看到的原因。它并不一定意味着该架构存在于该位置,这意味着该URI是该名称空间的唯一名称。

+0

我的意思是,这是命名空间的定义,但它没有涉及原因。把它这样,如果我把名字空间作为空白,没有任何工作。为什么? – bharal 2018-02-28 23:13:24

1

正如你要在你的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"> 

使用android命名空间,您可以找到密钥idlayout_widthlayout_height。请致电here