代码之家  ›  专栏  ›  技术社区  ›  Soon Santos

SearchView样式干扰工具栏样式ActionBar

  •  2
  • Soon Santos  · 技术社区  · 6 年前

    我需要的是: 我需要动作条 白色文本 就像这个:

    Action bar with White Text

    以及searchview最近的查询 建议 定制如下:

    Suggestions customized

    问题: 两者我都能做到,但我不能同时做到,当我把标题设为白色时,建议的风格就不一样了。我会告诉你我是怎么处理的。

    建议布局

    样式.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>
    

    @布局/项目建议: 这是我自定义建议项布局的地方 作品 完美。

    动作栏样式

    由于我的apptheme是light,所以操作栏和按钮的默认标题是黑色的。要覆盖(白色标题和图标),请执行以下操作:

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

    样式.xml

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

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

    我已经试过了

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Soon Santos    6 年前

    我创造了一个 深色动作条样式 ,因此它的按钮、标题、字幕将是白色的(如我所愿)。然后我把这个样式设置为我的动作条。

    然后,在customactionbar样式中设置searchview样式。

    警告: 如果我在customactionbar之外设置searchviewstyle,它将不起作用,它必须在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>