【问题标题】:Themes in Android are mixingAndroid 中的主题正在混合
【发布时间】:2014-11-14 15:17:34
【问题描述】:

我有一个应用程序,我在主题中定义了主题“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”设置为主要主题,但应用程序显示来自主题的图像“乙”。

有什么想法???

【问题讨论】:

  • 你的意思是当某些事件发生时的按钮(比如按下按钮),你想改变按钮的样式吗?
  • 我的意思是当应用程序启动时,我在清单中设置了主题,但我为主题 A 设置了样式,但应用程序正在从主题 B 中选择样式
  • 如果样式同名,第二个样式不会覆盖第一个吗?
  • 什么情况下需要修改图片?
  • 用户在应用程序中有一个选择主题的选项,所以我在运行时更改了样式,但应用程序默认以主题 A 开头,但始终显示来自主题 B 的图像

标签: android user-interface styles


【解决方案1】:

做这样的事情:

<style name="button" parent="A">
    <item name="android:background">@drawable/image</item>
</style>

drawable/image.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" 

【讨论】:

  • 是的,我必须父母
【解决方案2】:

我找到了如何回答我的问题,因此您需要按照后续步骤进行修复

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 之间更改清单中的主题,它将起作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多