Android主题并不完全适用于设备

时间:2018-08-22 05:04:42

标签: android android-theme android-styles

我为Android应用程序创建了一个自定义主题。在设计器和几个实际的测试设备中,它们都可以正确显示,但是特定设备似乎无法正确应用主题的某些部分。看起来由于某种原因,任何非活动/禁用状态都将样式用于相反的状态。示例:screenshot 蓝色按钮处于禁用状态,输入控件中的文本实际上是一个提示,但是即使在有问题的设备上也不会变灰。

主题本身与基本主题没有太大变化:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar" >
    <item name="android:colorForeground">@android:color/background_light</item>
    <item name="android:textColorPrimary">@android:color/primary_text_light</item>
    <item name="colorAccent">@android:color/holo_blue_bright</item>
</style>

该设备运行Android 6.0,该应用的目标API级别> =19。另一台具有相同Android版本的制造商的测试设备可以正常工作。

我尝试了一些建议的解决方案,例如按照https://stackoverflow.com/a/13443946/4429472将主题复制到values-v11values-v14中,但是都没有解决问题的方法。

编辑:有问题的电话是带有Freeme OS的Leagoo M8。

1 个答案:

答案 0 :(得分:0)

在您的res> value> colours.xml中

添加此

    <color name="colorForeground">#ffffffff</color>
    <color name="colorAccent">#FF4081</color>
    <color name="holo_blue_bright">#ff00ddff</color>
    <color name="bright_foreground_light_disabled">#80000000</color>
    <color name="bright_foreground_light">#ff000000</color>

在此代码后的名称为selector_text.xml的可绘制文件夹中创建一个选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="@color/bright_foreground_light_disabled"/>
    <item android:state_window_focused="false" android:color="@color/bright_foreground_light"/>
    <item android:state_pressed="true" android:color="@color/bright_foreground_light"/>
    <item android:state_selected="true" android:color="@color/bright_foreground_light"/>
    <item android:state_activated="true" android:color="@color/bright_foreground_light"/>
    <item android:color="@color/bright_foreground_light"/> <!-- not selected -->

</selector>

使用此更新样式还重命名样式AppTheme_custom,并在清单以及使用此主题的位置进行更改。

<style name="AppTheme_custom" parent="Theme.AppCompat.Light.NoActionBar" >
    <item name="android:colorForeground">@color/colorForeground</item>
    <item name="android:textColorPrimary">@drawable/selector_text</item>
    <item name="colorAccent">@color/holo_blue_bright</item>
    </style>