Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android themes - defining colours in custom themes

Tags:

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> 
like image 712
dorjeduck Avatar asked Oct 03 '12 07:10

dorjeduck


People also ask

How do I change the color of my android theme?

In the Project pane select Android, go to app > res > values > themes > themes.

What is primary color and secondary color android?

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.

What is colorPrimaryVariant in android?

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. (


Video Answer


1 Answers

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

like image 51
dorjeduck Avatar answered Oct 07 '22 13:10

dorjeduck