Android:如何在Activity类中获取XML的自定义属性

时间:2012-03-09 02:58:05

标签: android 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" />

1 个答案:

答案 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