Как я могу установить атрибут для нескольких рисованных объектов, указанных в <selector>? - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть кнопка, которая использует <selector> как часть ее drawable, определенной в атрибуте android:background в стиле. Затем селектор использует несколько drawable, для которых требуется атрибут. Как передать этот атрибут из селектора?

wdg_button. xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/wdg_button_pressed" /> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@drawable/wdg_button_normal" /> <!-- focused -->
    <item android:drawable="@drawable/wdg_button_normal" />
</selector>

wdg_button_normal. xml Каждый из В списке элементов, перечисленных в <selector>, есть элементы с двумя атрибутами ...

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:bottom="0dp"
        android:top="4dp"
        android:left="0dp"
        android:right="0dp">
        <shape android:shape="rectangle">
            <corners android:radius="2dp" />
            <solid android:color="?attr/shadow_color" />
        </shape>
    </item>
    <item android:bottom="4dp"
        android:top="4dp"
        android:left="0dp"
        android:right="0dp">
        <shape android:shape="rectangle">
            <corners android:radius="2dp" />
            <solid android:color="?attr/face_color" />
        </shape>
    </item>
</layer-list>

Вот мой attrs.xml

<resources>
    <declare-styleable name="icon">
        <attr name="icon_color" format="color" />
        <attr name="accent_color" format="color" />
    </declare-styleable>
    <declare-styleable name="button">
        <attr name="shadow_color" format="color" />
        <attr name="face_color" format="color" />
    </declare-styleable>
</resources>

Я хотел бы иметь возможность создать кнопка устанавливает face_color и shadow_color программно, и предпочтительнее использовать оба атрибута по умолчанию для цветовой схемы. Я думаю, что мне понадобится селектор, чтобы передать значения каждому drawable, и мне нужно как-то получить доступ к селектору, чтобы установить атрибут.

Возможно ли это или существует альтернатива для достижения того же эффект.

...