2011-05-02 58 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