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

Mar*_*lip 3 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>
Run Code Online (Sandbox Code Playgroud)

表现:

<application android:icon="@drawable/icon"
             android:label="@string/app_label"
             android:theme="@style/master"
             android:hardwareAccelerated="true"
             android:debuggable="true"> 
Run Code Online (Sandbox Code Playgroud)

Mar*_*lts 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>
Run Code Online (Sandbox Code Playgroud)

  • 是! 我将命名我的第一个出生的马丁. (3认同)