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

时间:2018-07-05 13:05:25

标签: android android-layout android-actionbar android-styles

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

Action bar with White Text

然后像这样自定义的SearchView最近查询建议

Suggestions customized

问题::我都可以做,但不能同时做,当我将标题设置为白色时,建议样式消失了。我将展示如何处理此问题。

建议布局

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>

@ layout / item_suggestions::这是我自定义建议项的布局的地方,它完美地工作

动作栏样式

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

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

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

styles.xml

<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:textColorPrimary">@color/colorWhite</item>
</style>

最终问题::当我将此主题应用于操作栏以获取白色文本和图标时。 BOWN,SearchView建议的主题不再起作用。同时实现两者的聪明方法是什么?

我已经尝试过的内容

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

1 个答案:

答案 0 :(得分:2)

我创建了一个深色ActionBar样式,因此其按钮,标题和字幕将为白色(根据需要)。然后,将这种样式设置为我的操作栏。

然后,我在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>