Android:如何在Activity类中获取XML的自定义属性
问题描述:
如何在我的Activity类中获取属性值“required”?Android:如何在Activity类中获取XML的自定义属性
1.值\ attrs.xml
<declare-styleable name="EditText">
<attr name="required" format="boolean" />
</declare-styleable>
2.布局\ text.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/com.mycompany.test"
android:baselineAligned="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/txtTest"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:inputType="text"
custom:required="true" />
答
在的EditText 构造添加逻辑以读出的数据来自xml:
public EditText(final Context context, final AttributeSet attrs, final int defStyle)
{
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.EditText);
final int N = a.getIndexCount();
for (int i = 0; i < N; ++i)
{
int attr = a.getIndex(i);
switch (attr)
{
case R.styleable.EditText_required: {
if (context.isRestricted()) {
throw new IllegalStateException("The "+getClass().getCanonicalName()+":required attribute cannot "
+ "be used within a restricted context");
}
boolean defaultValue = false;
final boolean required = a.getBoolean(attr, defaultValue);
//DO SOMETHING
break;
}
default:
break;
}
}
a.recycle();
}
开关结构被用来检查许多自定义属性。如果你只对一个属性感兴趣,你可以跳过switch语句
如果您想了解更多,尤其是如何使用XML属性读取此添加方法处理: Long press definition at XML layout, like android:onClick does
你找到答案?我正在努力解决同样的问题:) – 2013-02-09 12:13:04