我在同一個問題上掙扎,接近做類似於你想出的東西,幸運的是我找到了下面的解決方案,我也說過here。
首先定義在attr.xml定製色域
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="titleColor" format="reference|color" />
<attr name="introColor" format="reference|color" />
</resources>
下一個定義你的主題
<style name="AppTheme.MyLight" parent="android:Theme">
<item name="titleColor">#FFFFFF</item>
<item name="introColor">#FFFFAA</item>
</style>
<style name="AppTheme.MyDark" parent="android:Theme">
<item name="titleColor">#000000</item>
<item name="introColor">#004444</item>
</style>
在佈局
最後
<TextView
android:id="@+id/quoteTitle"
android:textColor="?titleColor"
...
</TextView>
<TextView
android:id="@+id/quoteIntro"
android:textColor="?introColor"
...
</TextView>
好像有在官方的Android文檔中沒有關於使用屬性的解釋。我發現的最佳資源是here。