@eugen-pechanec is hinting that the attributes primaryContentAlpha
and scondaryContentAlpha
are missing, IMHO below API 26. Should we call this a bug or a missing back port? Don't know.
The consequence is that you can't use the setting ?attr/colorForeground
as a default to automatically create all foreground colours out of the box. You basically have two options, either not to use it to to do a manual back port.
Disable colorForeground
Instead of generating the colours from ?attr/colorForeground
you set the attributes android:textColorPrimary
and android:textColorSecondary
directly. This will be the best choice in most cases.
Backport colorForeground
If you plan to use a lot of different themes, you want to enable the feature to set defaults for all text colours in a central place. Then you have to implement the behaviour of API 26 in your root theme.
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>
primaryContentAlpha
and use it in your app. – StoopsprimaryContentAlpha
works. Yet it requires to also define my owncolor/text_color_primary.xml
. So after all I still have to define the text colours separately. Using?colorForeground
as central, default color setting seems not to be a mature feature with respect to older devices. – Santiagosantillan