在android开发中,往往要用到自定义的控件来实现我们的需求或效果。在使用自定义
控件时,难免要用到自定义属性,那怎么使用自定义属性呢?
在文件res/values/下新建attrs.xml属性文件,中定义我们所需要的属性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?xml version= "1.0" encoding= "utf-8" ?> <resources><!-- resource是跟标签,可以在里面定义若干个declare-styleable --> <declare-styleable name= "custom_view" ><!-- name定义了变量的名称 --> <attr name= "custom_color" format= "color" ></attr> <!-- 定义对应的属性,name定义了属性的名称 --> <attr name= "custom_size" format= "dimension" ></attr> <!--每一个发生要定义format指定其类型,类型包括 reference 表示引用,参考某一资源id string 表示字符串 color 表示颜色值 dimension 表示尺寸值 boolean 表示布尔值 integer 表示整型值 float 表示浮点值 fraction 表示百分数 enum 表示枚举值 flag 表示位运算 --> </declare-styleable> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class customtextview extends textview { private int textsize; //自定义文件大小 private int textcolor; //自定义文字颜色 //自定义属性,会调用带两个对数的构造方法 public customtextview(context context, attributeset attrs) { super (context, attrs); typedarray ta = context.obtainstyledattributes(attrs, r.styleable.custom_view); //typedarray属性对象 textsize = ta.getdimensionpixelsize(r.styleable.custom_view_custom_size, 20 ); //获取属性对象中对应的属性值 textcolor = ta.getcolor(r.styleable.custom_view_custom_color, 0x0000ff ); setcolorandsize(textcolor, textsize); //设置属性 ta.recycle(); } public customtextview(context context) { super (context); } private void setcolorandsize( int textcolor, int textsize) { settextcolor(textcolor); settextsize(textsize); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<linearlayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" xmlns:ldm= "http://schemas.android.com/apk/res/com.ldm.learn" android:layout_width= "match_parent" android:layout_height= "match_parent" android:background= "#f6f6f6" android:orientation= "vertical" android:padding= "10dp" > <com.ldm.learn.customtextview android:layout_width= "100dp" android:layout_height= "100dp" android:text= "自定义textview" ldm:custom_color= "#333333" ldm:custom_size= "35sp" /> </linearlayout> |
布局说明:
通过以上几步就可以实现我们想要的自定义属性效果(用自定义属性设置文字大小及颜色)啦!