根据我的 AppTheme 样式选择更改自定义样式

Have Custom Style Change Based On My AppTheme Style Selection

我有一个应用程序,我想为其提供浅色和深色主题。

例如:

<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
    ...
</style>

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo.Dark">
    ...
</style>

我还有一个自定义样式,指定要应用于任何使用它的背景:

<style name="MyCustomViewBackground">
  <item name="android:background">@drawable/half_alpha_white_rounded_background</item>
</style>

如何安排我的 MyCustomViewBackground 样式为我的 AppTheme.Light 样式指定一个背景 (half_alpha_white_rounded_background),并为我的 AppTheme.Dark 样式指定一个不同的背景 (half_alpha_dark_rounded_background)?

这应该有效(未测试):

attrs.xml

<resources>
        <attr name="customViewBackground" format="reference" />
</resources>

styles.xml

<style name="MyCustomViewBackground">
    ...
    <item name="android:background">?attr/customViewBackground</item>
    ...
</style>

themes.xml

<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
    ...
    <item name="customViewBackground">@drawable/half_alpha_white_rounded_background</item>
    ...
</style>

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo.Dark">
    ...
    <item name="customViewBackground">@drawable/half_alpha_dark_rounded_background</item>
    ...
</style>