1
我想在我的android應用程序中支持不同的主題。 主題應該只有兩種顏色。因此,有這些顏色對於每個主題:僅在更改主題時更改顏色
- 原色
- 輔色
我想要的是,有一個大的默認主題,也有孩子們喜歡的按鈕樣式等,像這樣(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>
但現在我也想改變不同顏色的主題。因此,我在attrs.xml
文件創建的資源:
<resources>
<attr name="ThemeColorPrimary" format="reference" />
<attr name="ThemeColorSecondary" format="reference" />
</resources>
所以,現在我可以在我的styles.xml
從上面使用這個屬性是這樣的:
<style name="DefaultTheme.Button">
<item name="android:textAllCaps">true</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">?attr/ThemeColorPrimary</item>
[...]
</style>
但是我怎麼創造我的顏色主題?我知道我需要做這樣的事情:
<item name="ThemeColorPrimary">@color/ThemeBluePrimary</item>
但是在哪裏?哪個主題從哪個繼承?如果我現在有這樣的事情:
<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>
我不能AndroidManifest.xml
主題類似這樣的規定:
<activity
android:name="StackOverflowActivity"
android:screenOrientation="portrait"
android:theme="@style/DefaultTheme.NoActionBar" />
,因爲指定的資源將丟失。否則我也不能這樣:
<activity
android:name="StackOverflowActivity"
android:screenOrientation="portrait"
android:theme="@style/BlueTheme.NoActionBar" />
因爲BlueTheme沒有被稱爲「NoActionBar」的Child。
我知道這很混亂,我很困惑自己。 我該如何解決這個問題? 預先感謝您。