I am sure there is a simple answer to that yet I just cant find it so I throw it into stackoverflow ... ;-)
I will just put it into an example. I have an android app where the user can choose the theme in the preferences - dark or light theme. Depending on the chosen theme I have to adjust 20 colors in my app. So I have the hope that I can define colours in the theme and then use the names of this so defined colours in the my TextViews etc. Yet so far I cant figure out how to do that and can't find any solution here and there. I really dont want to define an extra dark and light style for each of these 20 colours yet so far that seems the only solution I can find.
Big thanks for any hint
martin:
UPDATE:
In pseudo syntax is that is what I am looking for. Is it possible?
<style name="AppTheme.MyDark" parent="android:Theme"> -?-> titleColor = "#ffffff" -?-> introColor = "#ffaaaa" </style> <style name="AppTheme.MyLight" parent="android:Theme.Light"> -?-> titleColor = "#000000" -?-> introColor = "#004444" </style> <TextView android:id="@+id/quoteTitle" android:textColor=@titleColor ... </TextView> <TextView android:id="@+id/quoteIntro" android:textColor=@introColor ... </TextView>
In the Project pane select Android, go to app > res > values > themes > themes.
The primary color is the color displayed most frequently across your app's screens and components. The primary variant color is used to distinguish two elements of the app using the primary color, such as the top app bar and the system bar. The secondary color provides more ways to accent and distinguish your product.
colorPrimary - The color displayed most frequently across your app's screens and components. This color should pass accessibilty guidelines for text / iconography when drawn on top of the surface or background color. ( Default Value: #6200EE) colorPrimaryVariant - A tonal variation of the primary color. (
I found a solution which seems to work. First you need to define the custom color fields in attr.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <attr name="titleColor" format="reference|color" /> <attr name="introColor" format="reference|color" /> </resources>
Next you define your themes
<style name="AppTheme.MyDark" parent="android:Theme"> <item name="titleColor">#FFFFFF</item> <item name="introColor">#FFFFFF</item> </style> <style name="AppTheme.MyLight" parent="android:Theme"> <item name="titleColor">#000000</item> <item name="introColor">#004444</item> </style>
and finally in your layout
<TextView android:id="@+id/quoteTitle" android:textColor="?titleColor" ... </TextView> <TextView android:id="@+id/quoteIntro" android:textColor="?introColor" ... </TextView>
i found the solution mainly here
There seems to be no explanation in the official android documentation about using attributes. Best resource I found is here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With