Android SearchView样式干扰工具栏样式操作栏

Android SearchView样式干扰工具栏样式操作栏,android,android-layout,android-actionbar,android-styles,Android,Android Layout,Android Actionbar,Android Styles,我需要什么:我需要一个带有白色文本的操作栏,如下所示: 而SearchView最近的查询建议定制如下: 问题:我可以同时做这两件事,但我不能同时做,当我将标题设置为白色时,建议风格消失。我将展示我是如何处理这件事的 建议布局 styles.xml <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> ... <item name="searchViewStyle">@sty

我需要什么:我需要一个带有白色文本的操作栏,如下所示:

而SearchView最近的查询建议定制如下:

问题:我可以同时做这两件事,但我不能同时做,当我将标题设置为白色时,建议风格消失。我将展示我是如何处理这件事的

建议布局

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView" >
    <item name="suggestionRowLayout">@layout/item_suggestions</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:textColorPrimary">@color/colorWhite</item>
</style>

...
@样式/MySearchViewStyle
@布局/项目建议
@layout/item\u建议:这是我自定义建议项布局的地方,它工作得非常好

动作栏样式

因为我的AppTheme是Light,所以我默认的操作栏和按钮标题是黑色的。要覆盖(白色标题和图标),请执行以下操作:

<android.support.design.widget.AppBarLayout
    ...>

    <android.support.v7.widget.Toolbar
        ...
        android:theme="@style/ThemeOverlay.MyApp.ActionBar"/>

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView" >
    <item name="suggestionRowLayout">@layout/item_suggestions</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:textColorPrimary">@color/colorWhite</item>
</style>

@彩色/彩色白色
最后一个问题:当我将此主题应用于操作栏以获取白色文本和图标时。BOWN,SearchView建议的主题不再有效。同时实现这两个目标的聪明方法是什么

我已经尝试过的


我已经尝试在styles.xml中更改操作栏的样式(查找了数千个问题),但未能达到预期的效果。

我创建了一个黑色操作栏样式,因此其按钮、标题和字幕将为白色(如我所愿)。然后我将此样式设置为我的动作栏

然后,在CustomActionBar样式中设置SearchView样式

警告:如果我将我的searchViewStyle设置在CustomActionBar之外,它将不起作用,它必须在CustomActionBar样式之内才能起作用

<style name="CustomActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>

<android.support.design.widget.AppBarLayout
    android:theme="@style/CustomActionBar">

    <android.support.v7.widget.Toolbar 
         .../>

    <android.support.design.widget.TabLayout
         .../>

</android.support.design.widget.AppBarLayout>

@样式/MySearchViewStyle