XML Namespace
xmlns
xmlns
是 XML
语言中表示 Namespace
位置的标签,被定义在元素的开始标签中时。
标准语法为:
其中分为两部分:
prefix
:前缀Namespace URI
:所关联的 Namespace 位置
在Android xml布局文件头部的
即 Android API 的 Namespace 。
xmlns:app
在引用Library的第三方View时,我们需要在XML布局文件头部添加
或者
在 ADT 17.0.0(2012.3)更新中,添加了对 Library 自定义 View 的自定义 attribute 的支持。
通过使用http://schemas.android.com/apk/res-auto
标识 XML NameSpace,而不是以往的包名。
为什么要使用 xmlns:app
在 xml 布局文件中,我们需要标识
指定我们所用到的自带 View 的 attribute。但由于 API 升级,有些新添加或者更新的 attribute 对低版本 API 无法支持或者效果不一致。如果只使用 xmlns:android,那么很显然会出现一个问题:
在低 API 设备或者定制 ROM 中,会出现呈现效果不一致的问题。
使用 xmlns:app 则能够非常方便地解决这个问题。xmlns:app
其实并不仅限于 Library,而是针对整个 App:无论是你引用的Library中的attribute,还是你自定义的全局attribute都有效。
因此,我我们引用的 appcompat-v7
Library使用和 xmlns:android
相同的自定义 attribute(例如:android:showAsAction
,添加于 API 11)。显然,使用 android:showAsAction
的话,低版本 API 设备是无法支持的,而使用 app:showAsAction
则能都支持所有 API 版本。
通过使用app:showAsAction
,我们便使用到了appcompat-v7
的自定义attribute,其定义在 appcompat-v7
的 res/values/attrs.xml
中的 Line 12。
这样我们就可以控制 App 在不同 API 或者 ROM 中的呈现方式都一致了。