Ich möchte verschiedene Themen in meiner Android-Anwendung unterstützen. Die Themen sollten sich nur in zwei Farben unterscheiden. So gibt es diese Farben für jedes Thema:Ändern Sie nur Farbe beim Ändern Thema
- Primärfarbe
- Sekundärfarbe
Was ich will, ist, dass es ein großes Standardthema ist, dass auch Kinder wie Button Stile et hat, so (styles.xml):
<style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="homeAsUpIndicator">@drawable/my_stackoverflow_arrow</item>
[...]
</style>
<style name="DefaultTheme.NoActionBar">
<!-- hide action bar and title -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="DefaultTheme.Button">
<item name="android:textAllCaps">true</item>
<item name="android:textStyle">bold</item>
[...]
</style>
Aber jetzt möchte ich auch Themen für verschiedene Farben ändern. Deshalb habe ich eine Ressource in der attrs.xml
Datei erstellt:
<resources>
<attr name="ThemeColorPrimary" format="reference" />
<attr name="ThemeColorSecondary" format="reference" />
</resources>
So, jetzt kann ich dieses Attribut in meinem styles.xml
von oben wie folgt verwenden:
<style name="DefaultTheme.Button">
<item name="android:textAllCaps">true</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">?attr/ThemeColorPrimary</item>
[...]
</style>
Aber wie erstelle ich meine farbigen Themen? Ich weiß, ich brauche so etwas wie dies zu tun:
<item name="ThemeColorPrimary">@color/ThemeBluePrimary</item>
Aber wo? Und welches Thema erbt von welchem? Wenn ich jetzt so etwas wie haben:
<style name="BlueTheme" parent="DefaultTheme">
<item name="ThemeColorPrimary">@color/ThemeBluePrimary</item>
<item name="ThemeColorSecondary">@color/ThemeBlueSecondary</item>
</style>
<style name="GreyTheme" parent="DefaultTheme">
<item name="ThemeColorPrimary">@color/ThemeGreyPrimary</item>
<item name="ThemeColorSecondary">@color/ThemeGreySecondary</item>
</style>
<style name="BlackTheme" parent="DefaultTheme">
<item name="ThemeColorPrimary">@color/ThemeBlackPrimary</item>
<item name="ThemeColorSecondary">@color/ThemeBlackSecondary</item>
</style>
kann ich nicht in AndroidManifest.xml
das Thema wie folgt angeben:
<activity
android:name="StackOverflowActivity"
android:screenOrientation="portrait"
android:theme="@style/DefaultTheme.NoActionBar" />
Da die angegebenen Ressourcen fehlen würde. Ansonsten auch ich kann das nicht:
<activity
android:name="StackOverflowActivity"
android:screenOrientation="portrait"
android:theme="@style/BlueTheme.NoActionBar" />
weil BlueTheme kein Kind hat, die „NoActionBar“ genannt wird.
Ich weiß, das ist verwirrend, ich bin selbst ziemlich verwirrt. Wie kann ich das lösen? Vielen Dank im Voraus.