Есть ли способ прочитать атрибут представления через привязку данных во время создания представления?

Я использую привязку данных и пытаюсь составить некоторые настройки. У меня есть представление, макет которого я хочу определить с помощью пользовательского атрибута (передавая перечисление). Например, передавая либо Setting.CHECKBOX или же Setting.SWITCH должен позволить мне накачать соответствующий элемент управления для просмотра. Представление будет определено так:

<data>
<import type="com.mypackage.ui.SettingView.SettingControl" />

<SettingView
    android:id="@+id/setting_foo
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    setting:control="@{Setting.CHECKBOX} />
...

Есть ли способ, которым я могу прочитать это setting:control атрибут до раздувания макета? Основываясь на настройке, я хочу указать, как раздувать SettingView.

Я знаю, что могу сделать это с помощью пользовательских атрибутов / styleables, но мне было интересно, можно ли это сделать с помощью привязки данных.

1 ответ

Решение

Нет. Чтобы посмотреть на значение атрибута во время инфляции, вы не можете использовать синтаксис привязки данных. Привязка данных удалит значение из XML и добавит его в сгенерированный код привязки.

Вместо этого добавьте атрибут в файл attrs.xml и присвойте значение, используя обычный синтаксис. Затем вы можете прочитать атрибут, используя context.obtainedStyledAttributes() и доступ к значению через TypedArray,

Другие вопросы по тегам