爲什麼在xml佈局文件中需要這一行?爲什麼這行xmlns:android =「http://schemas.android.com/apk/res/android」必須是佈局xml文件中的第一行?
xmlns:android="http://schemas.android.com/apk/res/android"
爲什麼在xml佈局文件中需要這一行?爲什麼這行xmlns:android =「http://schemas.android.com/apk/res/android」必須是佈局xml文件中的第一行?
xmlns:android="http://schemas.android.com/apk/res/android"
在XML,XMLNS聲明瞭一個命名空間。事實上,當你這樣做:
<LinearLayout android:id>
</LinearLayout>
與其說android:id
的,XML將使用http://schemas.android.com/apk/res/android:id是唯一的。通常這個頁面不存在(它是一個URI,而不是一個URL),但有時它是一個解釋使用的名稱空間的URL。
命名空間具有幾乎相同的用途作爲Java應用程序包的名稱。
Here是一個解釋。
統一資源標識符(URI)
統一資源標識符(URI)是個字符的字符串,其 標識互聯網資源。
最常見的URI是統一資源定位符(URL),其 識別的因特網域地址。另一種不常見的類型是URI是通用資源名稱(URN)。
在我們的例子中,我們將只使用網址。
的xmlns指XML namespace
當使用XML前綴爲前綴所謂的命名空間中必須定義。名稱空間由元素的開始標記中的xmlns屬性定義。命名空間聲明具有以下語法。的xmlns:前綴= 「URI」。
注意:分析器不使用命名空間URI來查找信息。
的目的是給命名空間的唯一名稱。但是,公司通常使用名稱空間作爲指向包含名稱空間信息的網頁的指針。
xmlns:android 定義Android命名空間。此屬性應始終設置爲「http://schemas.android.com/apk/res/android」。
參考http://developer.android.com/guide/topics/manifest/manifest-element.html
的xmlns:安卓這是開始標記在Android中定義的Android命名空間。這是Android谷歌開發人員定義的標準約定。當您使用和佈局默認或客戶時,則必須使用此名稱空間。
定義了Android命名空間。該屬性應始終設置爲「http://schemas.android.com/apk/res/android」。
必讀:http://developer.android.com/guide/topics/manifest/manifest-element.html
要理解爲什麼xmlns:android=「http://schemas.android.com/apk/res/android」
必須是第一個在佈局XML文件中,我們將使用一個例子
Sample
::
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container" >
</FrameLayout>
Uniform Resource Indicator(URI):
例:http://schemas.android.com/apk/res/android:id
是URI這裏
xmlns:android
描述了android 命名空間。textview
部件具有不同的 功能相比,Android的textview
,Android的命名空間有助於 區分我們的定製textview
部件和Android textview
部件這個答案真的值得閱讀,與上面那些沒有明確解釋「爲什麼?」相比, – eRaisedToX
你說的是「這樣的識別能夠與r進行交互通過網絡(通常是萬維網)使用特定協議介紹資源。 例如:http://schemas.android.com/apk/res/android:id是這裏的URI「 - 但是如果我沒有互聯網連接,這個android名字空間如何通過網絡與資源進行交互? – kavie
之間這僅僅是XML命名空間聲明。我們使用這個名稱空間來指定下面列出的屬性屬於Android。因此,他們以「android:」
開頭。實際上,您可以創建自己的自定義屬性。因此,爲了防止名稱衝突,其中2個屬性命名爲相同的事物,但行爲不同,我們添加前綴「android:」來表示這些屬性是Android屬性。
因此,此名稱空間聲明必須包含在XML文件的根視圖的開始標記中。
在XML中,元素名稱由開發人員定義。當嘗試混合來自不同XML應用程序的XML文檔時,這通常會導致衝突。用戶或XML應用程序將不知道如何處理這些差異。使用名稱前綴可以輕鬆避免XML中的名稱衝突。在XML中使用前綴時,必須定義前綴的命名空間。命名空間可以由元素的開始標記中的xmlns屬性定義。命名空間聲明具有以下語法。的xmlns:前綴= 「URI」。
擺在外行的術語:
沒有的xmlns:安卓=」 http://schemas.android.com/apk/res/android」機器人相關的標記不會我們的佈局的XML文檔中予以確認。
它是一個XML名稱空間聲明,用於指定視圖組中與其相關的屬性與android相關。
請詳細說明 –
xmlns:android="http://schemas.android.com/apk/res/android"
這是xmlns:android =「@ +/id」的形式。現在refernce它我們使用例如
android:layout_width="wrap_content"
android:text="Hello World!"
另一個的xmlns是
xmlns:app="http://schemas.android.com/apk/res-auto"
其是XMLNS的形式:應用= 「@ +/id」 和下面
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
其使用給定的
我認爲它清楚地說明了命名空間,因爲我們可以創建自己的屬性,並且如果用戶指定的屬性與Android相同,它就避免了命名空間的衝突。
那麼爲什麼我們有'android:layout_width'而不是'layout_width'? – Shashwat
那麼我們如何使用「LinearLayout」而不是「android:LinearLayout」? –
可能因爲LinearLayout是根名稱空間的一部分,並且android:xxx屬性是子名稱空間的一部分(「http://schemas.android.com/apk/res/android/android/id」) – NitroG42