@ eugen-pechanec намекает на то, что атрибуты primaryContentAlpha
и scondaryContentAlpha
отсутствуют, IMHO ниже API 26. Должны ли мы назвать это ошибкой или отсутствующим задним портом?Не знаю.
В результате вы не можете использовать настройку ?attr/colorForeground
по умолчанию для автоматического создания всех цветов переднего плана из коробки.В основном у вас есть два варианта, либо не использовать его для ручного обратного порта.
Отключить colorForground
Вместо генерации цветов из ?attr/colorForeground
вы устанавливаете атрибуты android:textColorPrimary
и android:textColorSecondary
напрямую.В большинстве случаев это будет лучшим выбором.
Backport colorForground
Если вы планируете использовать много разных тем, вы хотите включить функцию, чтобы установить значения по умолчанию для всех цветов текста.в центральном месте.Затем вы должны реализовать поведение API 26 в своей корневой теме.
root theme
:
<!-- workaround to port back API 26+ behaviour -->
<!-- below 26 these two attributes are missing in the android namespace -->
<item name="primaryContentAlpha">1.0</item>
<item name="secondaryContentAlpha">.85</item>
<!-- works below 26 -->
<item name="android:disabledAlpha">.4</item>
<!-- use my own files to connect my custom attributes -->
<item name="android:textColorPrimary">@color/text_color_primary</item>
<item name="android:textColorSecondary">@color/text_color_secondary</item>
app/src/main/res/color/text_color_primary.xml
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:alpha="?android:disabledAlpha" android:color="?android:attr/colorForeground" />
<item android:alpha="?attr/primaryContentAlpha" android:color="?android:attr/colorForeground" />
</selector>
app/src/main/res/color/text_color_secondary.xml
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:alpha="?android:disabledAlpha" android:color="?android:colorForeground"/>
<item android:alpha="?secondaryContentAlpha" android:color="?android:colorForeground"/>
</selector>