xmlns:android="http://schemas.android.com/apk/res/android 這句話的做用

xmlns:android="http://schemas.android.com/apk/res/android
有了這句話,你就能夠alt+/做爲提示,提示你輸入什麼,不應輸入什麼,什麼是對的,什麼是錯的,也能夠理解爲語法文件。或者語法判斷器什麼的

運行的時候那些控件的屬性都是經過它來識別的,若是上面你寫錯了,不會有任何問題,可是在運行的時候就會有問題,提示你沒有指定寬度等什麼。
這個是不用聯網的。

 

什麼是xmlns

xmlns,它是 XML 文檔中的一個概念:英文叫作 XML namespace,中文翻譯爲 XML 命名空間。android

一講到命名空間,我想不少人會聯想到C++中的namespace和Java中的 packagename,而這二者的做用都是爲了解決命名上的衝突(例如類名,接口名等)。app

相似的,XML namespace也是爲了解決 XML 中元素和屬性命名衝突,由於 XML 中的標籤並非預約義的,這一點與 HTML 是有區別的,HTML 中的標籤是預約義的,因此咱們會遇到命名衝突的問題。工具

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

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

 

Android中的xmlns

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

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提供相關信息

 

使用到自定義View的xml佈局文件

Android 自定義的xmlns其實很簡單,語法規則是: xmlns:前綴=http://schemas.android.com/apk/res/你的應用程序包路徑..net

通常狀況下,咱們引用「apk/res-auto」就讓app可以訪問res下全部資源的能力,固然若是想讓其只能訪問某個res資源,只須要引用「包名/apk/res/具體屬性文件夾」便可。翻譯

 

xmlns:tools的用法

在佈局中,任意xml標籤下添加代碼:code

xmlns:tools="http://schemas.android.com/tools"

以後,咱們便能使用android爲咱們提供的tools,先舉個開發過程當中的案例:xml

有時候在佈局一個xml的過程當中須要查看某個TextView的文字效果,因而指定了android:Text =
「客戶們都是笨蛋」;這時,產品上線,結果忘了刪除這行代碼,數據加載也沒有從新設置text內容。blog

這種場面是否是就很尷尬了?使用tools標籤就可以避免這樣的尷尬,咱們在xml佈局中加入tools:text=」客戶們都是笨蛋」,預覽中就會顯示出 客戶們都是笨蛋

但實際上,若是運行的話,是看不到這條text的。
除此以外,tools:標籤幾乎支持全部android:的同名標籤,好比tools:src、tools:textSize等,能夠本身進行探索。
總之,tools的做用就是可以方便開發者在開發過程當中提早預覽xml佈局而對以後的運行結果不產生影響,挺方便的一個工具。

 

 參考:

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

https://blog.csdn.net/Evan123mg/article/details/50906160

https://blog.csdn.net/qq_34773981/article/details/82667425

相關文章
相關標籤/搜索