3

tl;dr:搜索对话框拾取应用主题中的白色文本样式,使搜索文本不可见。

我正在努力解决看似微不足道的问题。

我的应用程序使用深色背景,并且我使用#EEEEEE 将文本颜色调整为比标准灰色更亮。

我已经实现了一个搜索对话框(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"> 
4

2 回答 2

5

该属性android:textColor不打算在主题样式中使用,它主要用于小部件和文本外观样式。

如果您想通过主题更改一般文本颜色,请改用android:textColor*属性族。它们的数量不少,不同的 View 使用它们的方式也不同,因此需要进行一些实验(或仔细研究 Android 源代码)才能搞定。android.R.attr文档将它们全部列出。查找以 . 开头的属性textColor...

为了让你开始,试试这个主题,它会表现得更好,完全不影响搜索对话框的颜色,这似乎是你想要的。顺便说一句,您不需要在您的主题中设置android:windowNoTitletrue,因为您的父主题已经这样做了:

<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>
于 2011-10-20T15:28:13.667 回答
0

我遇到了和你一样的问题。我四处寻找解决方案,但似乎您无法更改对话框的 textColor 。我的解决方案是根据本教程创建一个自定义对话框:http: //blog.androgames.net/10/custom-android-dialog/

我基于 Android 源代码对它进行了很多扩展,始终使用相同的方法名称等以使其更容易一些。

这并不理想,但据我所知,这是最好的选择......

编辑:对于您的问题,可能有一个更简单的解决方案:不要将 textColor 放入主题中,而是将其放入样式中。我不知道你是如何设计你的应用程序的,但我通常会创建一个“主风格”,所有其他人都继承自(直接或间接)。然后您可以将 textColor 放在那里,这样您的所有标准对话框仍将具有标准 textColor。

于 2011-10-17T10:25:31.973 回答