您的位置:首页 > 移动开发 > Android开发

【转】Android自定义控件中自定义属性的处理方式

2010-02-23 11:42 513 查看
Android自定义控件中自定义属性的处理方式

例如,用以下代码自定义控件RadioButtonX,

public class RadioButtonX extends android.widget.RadioButton implements OnCheckedChangeListener {

private String value;

public RadioButton(Context context, AttributeSet attrs, int defStyle) {

....

}

}

其中有自定义属性 value,那么在xml的layout配置文件中按如下方式写,

<com.xxx.RadioButtonX

android:id="@id/isPayDepositTrue"

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:text="@string/yes" android:textSize="18sp"

android:value="true">

</com.xxx.RadioButtonX>

这并不能自定的将value配置值注入到private String value属性中,还需要:1、添加declare-styleable;2、在构造函数中给value赋值;具体代码如下:

(1)在vlaues中添加attrs.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<declare-styleable name="RadioButtonX">

<attr name="value" format="string"/>

</declare-styleable>

</resources>

(2)在public RadioButtonX(Context context, AttributeSet attrs)构建器中添加如下代码:

TypedArray array= context.obtainStyledAttributes(attrs, R.styleable.RadioButtonX);

value=array.getString(R.styleable.RadioButton_value,"false");

array.recycle();

(3)layout文件中写成:

<com.xxx.RadioButtonX

xmlns:myNs="http://schemas.android.com/apk/res/com.xxx"

android:id="@id/isPayDepositTrue"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/yes"

android:textSize="18sp"

myNs:value="true">

</com.xxx.RadioButtonX>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: