android themes – defining colours in custom themes

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.

  • Removing Logging from Production Code in Android?
  • Android - TimePicker minutes to 15
  • How to run command 'ionic run android' on specific device?
  • Android - use ant to create build configurations that change configuration values
  • How to disable android application automatic restart after a crash (Android 2.2)
  • tool to check memory leaks in android
  • 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>
    

  • Error: Expected resource of type styleable error
  • Build Play Music-like interface
  • Dagger- Should we create each component and module for each Activity/ Fragment
  • Android R.java problems. R.java file does not update?
  • Create View-Object from XML file in android
  • How to create a helpful tooltip in Android
  • 2 Solutions collect form web for “android themes – defining colours in custom themes”

    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

    You can use styles and themes in your app to do the same. Here is a great tutorial on doing so.

    http://mobileorchard.com/android-app-development-using-themes-and-styles-in-android/

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.