属性值的类型(format)有如下几种:
1、reference 引用类型值 : @id/... 2、 color 颜色类型值 #ff00ff 3、 boolean 布尔类型值 true , false 4、 dimension 尺寸类型值 dp / px /sp 5、 integer 整数类型值 weight PRogress max 6、float 浮点型值 0.1f 7、string 字符串类型值 "atrrs"8、<enum> 枚举类型值 :水平/垂直
9、 flag:位或运算
10、fraction:百分数
使用步骤: 一、定义属性: 在values目录下创建attrs.xml
<declare-styleable name="suibianxue"> <attr name="roundColor" format="color"></attr> <attr name="textColor" format="color"></attr> <attr name="roundWidth" format="dimension"></attr> <attr name="textSize" format="dimension"></attr> </declare-styleable> 二、 在使用了自定义属性的xml布局文件中引用当前应用的命名空间:
eclipse中写成: xmlns:suibianxue="http://schemas.android.com/apk/res/应用包名" ( 其中suibianxie可以任意写, )
android studio中写成: xmlns:suibianxue="http://schemas.android.com/apk/res-auto" ( 其中suibianxie可以任意写, ) 三、 在自定义视图标签中使用自定义属性 <com.example.customatrrs.MyTextView android:id="@+id/mytextview" android:layout_width="120dp" android:layout_height="120dp"
suibianxue:roundProgressColor="@android:color/holo_red_dark" suibianxue:textColor="@color/text_progress" suibianxue:roundWidth="10dp" suibianxue:textSize="20sp" /> 四、在自定义View类的构造方法中, 取出布局中的自定义属性值 1、得到所有自定义属性的数组 : TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.customatrrs); 2、获取自定义属性的值, 如果没有指定取默认值 roundColor = typedArray.getColor(R.styleable.RoundProgress_roundColor, Color.RED); roundProgressColor = typedArray.getColor(R.styleable.RoundProgress_roundProgressColor, Color.GREEN); textColor = typedArray.getColor(R.styleable.RoundProgress_textColor, Color.GREEN); roundWidth = typedArray.getDimension(R.styleable.RoundProgress_roundWidth, UIUtils.dp2px(10)); textSize = typedArray.getDimension(R.styleable.RoundProgress_textSize, UIUtils.dp2px(20)); 3、释放资源数据: typedArray.recycle();
代码Demo下载路径:
新闻热点
疑难解答