xmlns全称 xml namespace (xml命名空间)
XML 命名空间定义语法为xmlns:namespace-prefix="namespaceURI"
,一共分为三个部分:
xmlns
:声明命名空间的保留字,其实就是XML中元素的一个属性;namespace-prefix
:命名空间的前缀,这个前缀与某个命名空间相关联;namespaceURI
:命名空间的唯一标识符,一般就是一个URI引用。
具体资料参考
http://www.w3school.com.cn/xml/xml_namespaces.asp
https://www.jianshu.com/p/6fcaffaeffd2
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
当命名空间被定义之后,所有带有相同前缀的子元素都会与同一个命名空间相关联。避免XML解析器对xml解析时的发送名字冲突,这就是使用xmlns的必要性。当自定义的View有自己的属性的时候,就用到xmlns来定义一个命名空间。
android
命名空间android用于定义android自带的属性
app
代表对android系统属性的新版本扩展或者自定义扩展
例如,有的属性上在4.0以后添加的,为了兼容4.0以前的系统,该属性不能用android属性定义,必须添加app开头
tools
这些属性用于渲染布局,而不会影响到程序运行。也就是说只在预览布局时出现,在程序运行时相当于该属性不存在。
这个说明非常有意思,比如我们在布局文件中想要显示一段文字时,而该文字内容在程序中可能动态变化,特别是有参数的字符串内容%1$s之类的内容,以前必须使用android:text显示,然后调整这段文字的大小颜色参数,然后完成后删除android:text属性。有了tools参数后,可以直接使用tools:text在预览时显示文字即可,省却了上面删除的麻烦。
常用的有
tools:text,
tools:visibility,
tools.src,
tools.background
tools还有更多属性,具体参考android tools属性引用