理解Android中的xmlns

我們先看一個例子:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/window_background">
</LinearLayout>

什麼是xmlns
xmlns,它是 XML 文檔中的一個概念:英文叫做 XML namespace,中文翻譯爲 XML 命名空間。一講到命名空間,我想很多人會聯想到C++中的namespace和Java中的 packagename,而這兩者的作用都是爲了解決命名上的衝突(例如類名,接口名等)。類似的,XML namespace也是爲了解決 XML 中元素和屬性命名衝突,因爲 XML 中的標籤並不是預定義的,這一點與 HTML 是有區別的,HTML 中的標籤是預定義的,所以我們會遇到命名衝突的問題。

XML 命名空間定義語法爲xmlns:namespace-prefix=”namespaceURI”,一共分爲三個部分:

xmlns:聲明命名空間的保留字,其實就是XML中元素的一個屬性;
namespace-prefix:命名空間的前綴,這個前綴與某個命名空間相關聯;
namespaceURI:命名空間的唯一標識符,一般就是一個URI引用。

Android中的xmlns

在Android中,目前我們碰到的xmlns一共有三種:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"

android

命名空間android用於 Android 系統定義的一些屬性。
app

命名空間app用於我們應用自定義的一些屬性,這個與 Android 自定義屬性和系統控件擴展應該有關係,大家可以再繼續研究一下。
tools

根據官方定義,tools命名空間用於在 XML 文檔記錄一些,當應用打包的時候,會把這部分信息給過濾掉,不會增加應用的 size,說直白點,這些屬性是爲IDE提供相關信息。

參考:http://www.jianshu.com/p/6fcaffaeffd2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章