Доступ к атрибутам внутренних видов пользовательского макета - PullRequest
0 голосов
/ 08 августа 2011

Я создал пользовательский макет, содержащий TextView и Spinner, который расширяет LinearLayout (называемый LabeledSpinner). Я поместил несколько из этих LabeledSpinner в свой основной RelativeLayout и, очевидно, я хочу установить различный текст для каждого из их текстовых представлений, но я не знаю, как это сделать в XML-файле.

Мне нужно как-то получить доступ к атрибутам внутренних видов, пожалуйста, помогите. Я пытался использовать [имя пакета] .LabeledSpinner.label: текст, но это не сработало

(метка является идентификатором textview)

1 Ответ

1 голос
/ 08 августа 2011

Сделать LabeledSpinner стилем (res / values ​​/ attrs.xml)

<declare-styleable name="LabeledSpinner">
    <attr name="text" format="string"/>
</declare-styleable>

В вашем LabeledSpinner

public LabeledSpinner(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.LabeledSpinner);
    String text = a.getString(R.styleable.LabeledSpinner_text);
    a.recycle();
}

Обратите внимание, что атрибут text в LabeledSpinner должен использоваться как LabeledSpinner_text.

Теперь в ваших раскладках

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourpackage="http://schemas.android.com/apk/res/com.package">
    <com.package.LabeledSpinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        yourpackage:text="This is where your text goes"/>
</LinearLayout>

Это должно сделать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...