我为Android应用程序创建了一个自定义主题。在设计器和几个实际的测试设备中,它们都可以正确显示,但是特定设备似乎无法正确应用主题的某些部分。看起来由于某种原因,任何非活动/禁用状态都将样式用于相反的状态。示例: 蓝色按钮处于禁用状态,输入控件中的文本实际上是一个提示,但是即使在有问题的设备上也不会变灰。
主题本身与基本主题没有太大变化:
<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-v11
和values-v14
中,但是都没有解决问题的方法。
编辑:有问题的电话是带有Freeme OS的Leagoo M8。
答案 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>