我有一个应用程序,我在主题中定义了主题"A"和"B",定义了一组样式
<resources>
<style name="Theme.A" parent="Theme.Base.AppCompat">
</style>
<style name="btnMiniPlayer" parent="Theme.A">
<item name="android:background">@drawable/image1</item>
</style>
<resources>
<style name="Theme.B" parent="Theme.Base.AppCompat">
</style>
<style name="btnMiniPlayer" parent="Theme.B">
<item name="android:background">@drawable/image2</item>
</style>
所以我在我的应用程序中有一个按钮中的属性
style="@style/button"
根据样式,我需要更改图像,我也在清单中设置了主题,但应用程序正在混合样式,所以现在我将"A"设置为主要主题,但应用程序显示主题"B"中的图像。
有什么想法吗???
做这样的事情:
<style name="button" parent="A">
<item name="android:background">@drawable/image</item>
</style>
可绘制/图像.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/image1" />
<item android:state_pressed="true" android:drawable="@drawable/image2" />
</selector>
还有这样的事情:
android:state_selected="true"
我找到了如何回答我的问题,所以你需要按照后续步骤来修复它
1-在我的情况下创建一个属性,我像myButton一样设置名称:
<declare-styleable name="def_Styles">
<attr name="myButton" format="reference" />
</declare-styleable>
2-在每个主题("A"和"B")中,您必须定义项目
<resources>
<style name="Theme.B" parent="Theme.Base.AppCompat">
<item name="myButton">@style/CustomButtonB</item>
</style>
<style name="CustomButtonB" parent="Theme.B">
<item name="android:background">@drawable/image2</item>
</style>
3-在视图中,只需将样式设置为正确的属性
style="?myButton"
如果您在 A 和 B 之间更改清单中的主题,它将是工作