自定义控件之自定义xmlns
来源:互联网 发布:美业邦软件的弊端 编辑:程序博客网 时间:2024/05/16 08:41
首先xmlns是什么呢,它就是一个控件属性的命名空间,我们经常使用的命名空间有Android和app等,那么我们自己如何定义一个可用的命名空间呢?
1、首先我们在values文件夹下创建一个attrs.xml文件,创建完毕之后里面有一个自动生成的resources标签,我们要做的就是在这个resources标签下定义几个属性,代码是这样:
<resources><declare-styleable name="MyTextView"> <attr name="mytitle" format="string"/> <attr name="mytitleTextSize" format="dimension"/> <attr name="mytitleTextColor" format="color"/> <attr name="myBackground" format="reference|color"/></declare-styleable></resources>
这个declare-styleable标签用来声明一组自定义属性,name属性代表这一组标签的名字,attr标签也就代表一个自定义属性,name属性代表这个自定义属性的名字,format属性代表这个自定义属性可以接受的类型。
format属性中我说明一下reference,这个代表的类型为引用类型,不仅可以是颜色,也可以是一张图片,也可以是其他资源。
这样我们就定义好了一组属性。
那么在自定义控件里如何使用这些属性获取属性值呢?
2、接下来我们需要重写自定义控件的构造方法,这里注意,不能重写只有一个参数的那个构造方法。
代码是这样的:
public MyTextView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); TypedArray ta=context.obtainStyledAttributes(attrs,R.styleable.MyTextView);//获取自定义属性组 title=ta.getString(R.styleable.MyTextView_mytitle);//获取mytitle属性值 ta.recycle();//回收ta}
这里首先获取自定义属性组,然后获取自定义属性值,这样,我们就能获得此控件的任何一个属性的属性值。最后,一定要回收ta。
在这个代码中,获得的title值就能根据自己控件的需要进行操作了。
3、最后,我们需要定义一个xmlns命名空间,XML 命名空间定义语法为 xmlns:namespace-prefix = “namespaceURI”,一共分为三个部分:
xmlns:声明命名空间的保留字;
namespace-prefix:命名空间名;
namespaceURI:命名空间的唯一标识符,就是一个URI引用。
先看一下我定义的命名空间吧:
xmlns:test="http://schemas.android.com/apk/res-auto"
经过多次试验,url直接使用我这个url就可以,其他的博客可能说在后面加上包名什么的,都不管用!
所以我们只需要改一下我这个代码的test(命名空间名)就将xmlns定义好了。
随后,我们在自定义控件中就能使用这个命名空间下的属性了。
比如:
<com.demo.mql.mydemo.MyTextView android:background="@color/colorPrimary" test:mytitle="@string/app_name" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
- 自定义控件之自定义xmlns
- Android 自定义xmlns
- Android自定义xmlns
- Android自定义xmlns
- Android 自定义xmlns
- Android中自定义xmlns
- xmlns:引用自定义属性
- Android自定义xmlns
- Android 自定义xmlns
- Android 自定义控件在Android Studio中xmlns不识别
- xmlns:android分析 及 自定义xmlns
- 自定义控件之自定义属性
- 自定义控件之自定义开关
- androidStudio 自定义控件时在XML使用xmlns自定义命名空间时报错?
- Android 自定义属性与xmlns
- Android自定义控件之自定义日历控件
- Android自定义控件之自定义组合控件
- Android 自定义控件之自定义组合控件
- 【jzoj5223】【GDOI2018模拟7.12】【B】【矩阵乘法】
- Tomcat MemoryLeak 问题
- 118. Pascal's Triangle
- Spring Boot 日志配置(超详细)
- Opencv 中cv开头的函数和没有cv的区别,例如cvWaitkey()和waitKey()的区别
- 自定义控件之自定义xmlns
- linux c++ 简易聊天室
- springmvc从数据库中读取数据并且显示成选择框
- Crontab 使用说明
- mysql5.7设置密码安全级别 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- 遥感影像镶嵌软件功能介绍
- PyQt5中文基础教程12 俄罗斯方块游戏
- TCP/IP学习笔记(一)基础知识
- 原型模式