主要是说明android 自定义控件的在布局代码中设置属性,如何自定义attributeset ,和在控件中如何获取到xml布局中设置的属性值,不是想了解这方面的请略过...不浪费大家时间
1.首先添加attr属性值
在当前project中的res/value目录中创建xml-resources;
如下:
其中上面的attr表情声明属性以及format中的属性的类型
属性类型有
1. reference:参考某一资源ID。
(1)属性定义:
(2)属性使用:
android:layout_width = "42dip" android:layout_height = "42dip" android:background = "@drawable/图片ID"
/>
2. color:颜色值。
(1)属性定义:
(2)属性使用:
android:layout_width = "42dip" android:layout_height = "42dip" android:textColor = "#00FF00"
/>
3. boolean:布尔值。
(1)属性定义:
(2)属性使用:
android:layout_width = "42dip" android:layout_height = "42dip"
android:focusable = "true"
/>
4. dimension:尺寸值。
(1)属性定义:
(2)属性使用:
android:layout_width = "42dip" android:layout_height = "42dip"
/>
5. float:浮点值。
(1)属性定义:
(2)属性使用:
/>
6. integer:整型值。
(1)属性定义:
(2)属性使用:
xmlns:android = "http://schemas.android.com/apk/res/android" android:drawable = "@drawable/图片ID" android:pivotX = "50%" android:pivotY = "50%" android:framesCount = "12" android:frameDuration = "100"
/>
7. string:字符串。
(1)属性定义:
(2)属性使用:
/>
8. fraction:百分数。
(1)属性定义:
(2)属性使用:
xmlns:android = "http://schemas.android.com/apk/res/android" android:interpolator = "@anim/动画ID"
android:fromDegrees = "0" android:toDegrees = "360"
android:pivotX = "200%"
android:pivotY = "300%" android:duration = "5000"
android:repeatMode = "restart"
android:repeatCount = "infinite"
/>
9. enum:枚举值。
(1)属性定义:
(2)属性使用:
xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "fill_parent" android:layout_height = "fill_parent" >
10. flag:位或运算。
(1)属性定义:
(2)属性使用:
android:name = ".StyleAndThemeActivity" android:label = "@string/app_name" android:windowSoftInputMode= "stateUnspecified | stateUnchanged | stateHidden">
注意:
属性定义时可以指定多种类型值。
(1)属性定义:
(2)属性使用:
android:layout_width = "42dip" android:layout_height = "42dip" android:background = "@drawable/图片ID|#00FF00"
/> 哈哈上面是偷的ctrl CV出来的。。。
2.获取属性的值
在最后一个构造方法中获取属性的值
TypedArray typedArray = getResources().obtainAttributes(attrs,
R.styleable.TabView);
这里面的TabView是我在上面attr中定义的该控件的名字,
mTextColorNormal = typedArray.getColor(R.styleable.TabView_text_normal_color, mTextColorNormal);
取颜色的是getColor、去宽度高度是getDimension,还有getboolean。具体自己看提示编译器提示,
需要注意的是这里R.styleable.TabView_text_normal_color
这里输入R.styleable然后输入TabView,会出现相应的属性,自己去找。
最后回收掉typedArray 释放内存。typedArray.recycle();
3.在xml中配置自定义属性:
首先在
xmlns:android="http://schemas.android.com/apk/res/android"
之后加一个
xmlns:app="http://schemas.android.com/apk/res-auto"
这个将最后设置为res-auto,其实可以准备定位到attr.xml文件。但是可以自动找到这个文件,我就不作死了。
上面的
xmlns:app
其中的app,可以自行设置,根据个人爱好吧。
但是引用自定义属性的时候必须带上自己设置的这个(app)name;
使用如下:
app:item_padding="10dp"
app:text_normal_color="#ff777777"
app:text_select_color="#ff45c01a"
app:text_size="12sp"