在我的应用中,我有两个主题(浅色和深色),我希望所有的CardView
根据所选主题更改它们的背景颜色。
我不想要的是:
<android.support.v7.widget.CardView
style="@style/CardView.MyBlue"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal">
上面的代码不是动态的。我需要根据选择的浅色或深色主题自动应用两种样式。
目前我的代码无法正常工作:
<style name="AppTheme.Light" parent="Theme.AppCompat.Light">
...
<item name="cardViewStyle">@style/CardViewStyle.Light</item>
</style>
<style name="AppTheme.Dark" parent="Theme.AppCompat">
...
<item name="cardViewStyle">@style/CardViewStyle.Dark</item>
</style>
<style name="CardViewStyle.Light" parent="CardView">
<item name="cardBackgroundColor">@color/cardview_dark_background</item>
</style>
<style name="CardViewStyle.Dark" parent="CardView">
<item name="cardBackgroundColor">@color/cardview_light_background</item>
</style>
我曾经在某个地方读到,你可以在/res/values/
中定义一个styleable.xml
文件来定义cardViewStyle
这个词的键,所以我这样做了:
styleable.xml:
<resources>
<declare-styleable name="AppTheme">
<attr name="cardViewStyle" format="reference" />
</declare-styleable>
</resources>
更新
这里有一个类似的问题。,但是没有得到答案。