如何在我的活动类中获取属性值“必需”?
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" />
答案 0 :(得分:2)
在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 statement
如果你想了解更多,特别是如何使用xml属性添加方法处理程序,请阅读: Long press definition at XML layout, like android:onClick does