2012-03-09 94 views
7

如何在我的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" /> 

+1

你找到答案?我正在努力解决同样的问题:) – 2013-02-09 12:13:04

回答

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语句

如果您想了解更多,尤其是如何使用XML属性读取此添加方法处理: Long press definition at XML layout, like android:onClick does

相关问题