Android: наследование стиля и значения настраиваемого атрибута в нем не работает - PullRequest
0 голосов
/ 06 мая 2018

У меня есть собственный атрибут в attr.xml:

<resources>
    <attr name="buttonBackgroundColor" format="reference"/>
</resources>

Я создал нарисованный button_background.xml, который использует этот пользовательский атрибут:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="?buttonBackgroundColor"/>


    <corners android:radius="7dp" />
</shape>

и я определил стиль, как показано ниже:

<style name="button_background">
        <item name="android:background">@drawable/button_background</item>
        <item name="android:elevation">3dp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:paddingTop">15dp</item>
        <item name="android:paddingBottom">15dp</item>
        <item name="android:gravity">center</item>

    </style>

Я определяю значение этого пользовательского атрибута в следующих дочерних стилях:

<style name="button_background_green" parent="button_background">
      <item name="buttonBackgroundColor">@color/Green</item>
</style>

<style name="button_background_blue" parent="button_background">
      <item name="buttonBackgroundColor">@color/Blue</item>
</style>

Я использую button_background_green Stye в TextView:

<TextView
    android:id="@+id/done"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    style="@style/button_background_green"
    android:textSize="17sp"
    android:text="@string/done" />

Я думаю, что именно так мы реализуем стили, которые имеют много общих свойств, но они не работают. Если для свойства android:background установить цвет в дочернем стиле, он будет работать отлично. Поэтому я думаю, что по какой-то причине он не может прочитать атрибут buttonBackgroundColor. Пожалуйста помоги. Я был бы очень признателен.

...