Android中的主题正在混合



我有一个应用程序,我在主题中定义了主题"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 之间更改清单中的主题,它将是工作

相关内容

  • 没有找到相关文章

最新更新