Android开发小记:命名空间错误导致自定义属性不生效
2017-09-12 17:49
471 查看
前言
好久没更新博文了,封闭开发一个多月,就问你怕不怕?最近在使用自定义控件的时候发现预览有效果,可是运行起来就不展示,最后才发现自己的布局中的命名空间有问题,导致了控件属性不生效。命名空间
命名空间:namespace。在XML文件中提供避免元素命名冲突的一种方法。同时,每个命名空间都是一组特定属性的集合标志。
举个栗子:
Android中常用的命名空间:android,tools。
自定义控件
在自定义的控件过程中,有时会自定义属性方便直接在布局中使用。使用自定义控件,可以如下:
<tech.michaelx.view.TabIndicator xmlns:tabindicator="http://schemas.android.com/tools" android:id="@+id/tab_indicator" android:layout_width="200dp" android:layout_height="60dp" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" tabindicator:selected_text_color="#FFFFFF" tabindicator:unselect_text_color="#333333">
利用xmlns:即xml namespace,声明了一个新的命名空间:tabindicator=”http://schemas.android.com/tools”。tabindicator被称作命名空间前缀,用来访问自定义view的自定义属性。AS预览中可以看到相应的效果,可是运行到机器上后,却发现自定义属性没有作用,起初还以为是代码逻辑出了问题,后来才发现,命名空间出了问题,正确的命名空间应该为:
xmlns:tabindicator="http://schemas.android.com/apk/res-auto"
前缀可以任意自定义,后面的
链接却应该注意,这应该是个常量:
"http://schemas.android.com/apk/res-auto"
改对命名空间之后就皆大欢喜了,本来是根据ide提示生成的命名空间,结果却错了,囧
没时间写长篇博文了,做个笔记,万一能帮到和我一样的糊涂蛋呢。。。
相关文章推荐
- jQuery命名空间,自定义空间及属性,插件开发全解析
- Android自定义XML属性以及遇到的命名空间的问题
- Android 自定义View 属性和命名空间
- Android自定义XML属性以及遇到的命名空间的问题
- Android自定义XML属性以及遇到的命名空间的问题
- jQuery命名空间,自定义空间及属性,插件开发全解析
- js 高级开发:对象属性prototype,自定义命名空间,自定义继承,闭包封装
- android中xml命名空间、自定义组件属性
- jQuery命名空间,自定义空间及属性,插件开发全解析
- Android 自定义view中的属性,命名空间,以及tools标签
- Android 自定义view中的属性,命名空间,以及tools标签
- jQuery命名空间,自定义空间及属性,插件开发全解析
- jQuery命名空间,自定义空间及属性,插件开发全解析 (转)
- android开发之自定义属性、View和使用
- android 自定义命名空间
- Android开发_自定义视图和属性
- android开发中的自定义属性用法详解
- C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型 分类: 嵌入式开发学习 2014-11-28 10:42 233人阅读 评论(0) 收藏
- android开发之自定义TextView设置字间距以及通过TextView控件属性设置行间距
- 【android 开发知识积累】——属性(Attribute)资源的使用和自定义View组件