Android: как получить пользовательский атрибут XML в классе Activity

Как получить значение атрибута «требуется» в моем классе активности?

1. values ​​\ attrs.xml

<declare-styleable name="EditText"> <attr name="required" format="boolean" /> </declare-styleable> 

2. layout \ 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, прочитайте это: Дайте определение длинну в XML-макете, например, android: onClick делает