代码之家  ›  专栏  ›  技术社区  ›  Shadow

如何防止ActionBar SearchView按钮消失

  •  1
  • Shadow  · 技术社区  · 6 年前

    我一直在努力解决这个问题,但在任何地方都找不到任何解决方案。

    目前,我有以下ActionBar选项菜单

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@+id/action_search"
            android:icon="@drawable/ic_search"
            android:title="@string/menu_search"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="ifRoom|collapseActionView" />
    
        <item
            android:id="@+id/action_sort_by"
            android:title="@string/sort_by"
            app:showAsAction="never" />
    
        <item
            android:id="@+id/action_refresh"
            android:title="@string/action_refresh"
            app:showAsAction="never" />
    
    </menu>
    

    除了在打开“选项”菜单的同时也打开“搜索”选项外,一切都很正常:

    目标布局符合预期

    enter image description here

    搜索选项已打开

    enter image description here

    这是导致问题的步骤,您可以看到搜索选项现在位于菜单中

    enter image description here

    由于前面的步骤,在关闭菜单和搜索选项时,搜索按钮消失

    enter image description here

    如果在打开搜索选项的同时我没有打开选项菜单,那么一切都会很好地工作,但是这是用户无法预期的,他们可能会在打开搜索选项的情况下打开菜单,导致搜索图标消失,从而导致非常有问题的用户体验。

    我如何解决这个问题,如何在保持相同布局的同时防止这个问题的发生?搜索图标可见,其他所有内容均显示在3点选项菜单中。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Chris Stillwell    6 年前

    要始终显示搜索图标,只需进行简单更改 app:showAsAction="ifRoom|collapseActionView" app:showAsAction="always|collapseActionView"