Android样式/仅搜索对话框的主题

时间:2011-09-25 17:26:44

标签: android android-searchmanager android-theme

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"> 

2 个答案:

答案 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。