tl; dr:应用主题中的白色文字样式被搜索对话框选中,使搜索文字不可见。
我正在努力解决看似微不足道的问题。
我的应用程序使用深色背景,并且使用#EEEEEE将文本颜色调整为比标准灰色更亮。
我已经实现了一个搜索对话框(pre-Honeycomb)并且效果很好,但是搜索对话框中的文本会选择相同的#EEEEEE,因此它基本上是不可见的。甚至当我长按搜索文本时显示的上下文菜单会选择#EEEEEE,因此那里的文本也是不可见的。
我正在撕扯我的头发,而且我的头发已经用完了。
风格:
<style name="master" paret="@android:style/Theme.NoTitleBar">
<item name="android:textColor">#EEEEEE</item>
<item name="android:windowNoTitle">true</item>
</style>
清单:
<application android:icon="@drawable/icon"
android:label="@string/app_label"
android:theme="@style/master"
android:hardwareAccelerated="true"
android:debuggable="true">
答案 0 :(得分:5)
属性android:textColor
并不意味着在主题样式中使用,它主要用于窗口小部件和文本外观样式。
如果要通过主题更改常规文本颜色,请使用android:textColor*
系列属性。它们中有不少,不同的视图使用它们不同,因此需要进行一些实验(或仔细研究Android源代码)才能使其正常运行。 android.R.attr文档列出了所有内容。查找以textColor...
开头的属性。
为了让你开始尝试这个主题,它会通过不影响搜索对话框颜色而表现得更好,这似乎是你想要的。顺便说一句,您不需要在主题中将android:windowNoTitle
设置为true
,因为您的父主题已经执行了此操作:
<style name="master" parent="@android:style/Theme.NoTitleBar">
<item name="android:textColorPrimary">#EEEEEE</item>
<item name="android:textColorSecondary">#EEEEEE</item>
<item name="android:textColorTertiary">#EEEEEE</item>
</style>
答案 1 :(得分:0)
我遇到了和你一样的问题。我四处寻找解决方案,但似乎你无法改变对话框的textColor。我的解决方案是根据本教程创建自定义对话框:http://blog.androgames.net/10/custom-android-dialog/
我基于Android源代码对此进行了大量扩展,总是使用相同的方法名称等,以使其更容易一些。
这不是理想的,但就我所知,这是最好的选择......
编辑:对于您的问题,可能有一个更简单的解决方案:不要将textColor放入主题,而是将其放在样式中。我不知道你是如何设计你的应用程序,但我通常创建一个“主人风格”,所有其他人继承(直接或间接)。然后,您可以将textColor放在那里,这样所有标准对话框仍将具有标准textColor。