android - Android 主题并不完全适用于设备
问题描述
我为我的 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 版本的另一台测试设备正常工作。
我已经尝试了一些建议的解决方案,例如将主题复制到values-v11
https://stackoverflow.com/a/13443946/4429472values-v14
中,但没有一个解决了问题。
编辑:有问题的手机是 Leagoo M8,带有 Freeme OS。
解决方案
在你的 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>
推荐阅读
- elasticsearch - Elasticsearch:如何在字段上添加语言分析器?
- r - 如何使数据框中的行从右到左累积
- php - Codeigniter 加载错误的类
- python - Access a component of a list
- wordpress - WordPress | 是否可以使用钩子在帖子标题的标记之后插入标记?
- java - Printing docx by Java
- mongoose - Mongoose fails to populate virtual when foreignField is an Array
- docker - Kompose 功能类似于 docker-compose links
- php - 在分形集合元数据中添加总和
- jsf-2 - 在 HttpSessionListener 中是否可以使用人脸上下文?