Android中使用attrs.xml文件定制RadioButton
扫描二维码
随时随地手机看文章
Android中使用attrs.xml文件定制RadioButton
1.在res/values下创建attrs.xml
1 |
< declare-styleable name = "MyRadioButton" > |
2 |
< attr name = "str" format = "string" /> |
3 |
</ declare-styleable > |
MyRadioButton为组件名字,随意起,attr标签定义组件的属性,name对应的是属性名,format是属性的类型,具体可参见《 [Android]attrs.xml文件中属性类型format值的格式》。
2.在自定义的组件中使用attrs.xml文件的定义
01 |
public class MyRadioButton extends RadioButton { |
02 |
private String url; |
03 |
|
04 |
public MyRadioButton(Context context, AttributeSet attrs) { |
05 |
super(context, attrs); |
06 |
TypedArray taArray = context.obtainStyledAttributes(attrs,R.styleable.MyRadioButton); |
07 |
this.url = taArray.getString(R.styleable.MyRadioButton_str); |
08 |
taArray.recycle(); |
09 |
} |
10 |
|
11 |
public String getUrl() { |
12 |
return url; |
13 |
} |
14 |
|
15 |
public void setUrl(String url) { |
16 |
this.url = url; |
17 |
} |
18 |
|
19 |
} |
a. TypedArray是存放资源R.styleable.MyRadioButton指定的属性集合。
b. 通过getXXX()获取属性值。
c. recycle()结束绑定 3.在布局文件中使用
01 |
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
02 |
xmlns:demo= "http://schemas.android.com/apk/res/net.csdn.blog.wxg630815" |
03 |
android:layout_width= "fill_parent" |
04 |
android:layout_height= "fill_parent" |
05 |
android:orientation= "vertical" > |
06 |
<RadioGroup |
07 |
android:layout_width= "fill_parent" |
08 |
android:layout_height= "wrap_content" |
09 |
> |
10 |
<net.csdn.blog.wxg630815.MyRadioButton |
11 |
android:layout_width= "fill_parent" |
12 |
android:layout_height= "wrap_content" |
13 |
android:id= "@+id/myradio1" |
14 |
demo:str= "1.csdn.net" |
15 |
/> |
16 |
<net.csdn.blog.wxg630815.MyRadioButton |
17 |
android:layout_width= "fill_parent" |
18 |
android:layout_height= "wrap_parent" |
19 |
android:id= "@+id/myradio2" |
20 |
demo:str= "2.csdn.net" |
21 |
/> |
22 |
|
23 |
</RadioGroup> |
24 |
|
25 |
</LinearLayout> |
注意: xmlns:demo="http://schemas.android.com/apk/res/net.csdn.blog.wxg630815"
只有声明这句以后,url属性才会被布局文件识别。net.csdn.blog.wxg630815指的是AndroidManifest.xml文件中manifest元素的package属性值。
使用demo:str给url赋值。