Android自定义控件中自定义属性的处理方式[]
作者:佚名 转贴自:CSDN|http://blog.csdn.net/cnetwei/archive/2010/02/23/5319060.aspx 点击数:475
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> |