旋转后的Searchview-按钮转到“ 3点”

Jel*_*ves 6 xml android rotation searchview

我在Android开发人员的Searchview上度过了一段糟糕的时光。

我正在尝试在工具栏的应用程序上实现Searchview。目前,它运行良好,但是当我旋转设备时,搜索视图的行为异常。

我的目标是保留查询文本,以此类推“ OnCreateOptionsMenu”

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    inflater.inflate(R.menu.menu_funcionarios_toolbar, menu);

    clearSearchItem = menu.findItem(R.id.botao_limpar_busca);

    searchItem = menu.findItem(R.id.botao_buscar);
    searchItem.setIcon(new IconicsDrawable(getContext(), MaterialDesignIconic.Icon.gmi_search).sizeDp(24));

    searchView = (SearchView) searchItem.getActionView();

    searchView.setMaxWidth(Integer.MAX_VALUE);
    searchView.setOnQueryTextListener(searchViewTextListener);


    searchView.post(new Runnable() {
        @Override
        public void run() {
            if (!mQuery.equals("")) {
                searchView.setQuery(mQuery,false);
            }
        }
    });

    if (mQuery != null & !mQuery.equals("")) {
        searchItem.expandActionView();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用.expandActionView(),则在旋转后(并使用SearchView提供的“ X”按钮清理字段),MenuItem变成了这三个小点,没有任何动作。要恢复以前的行为,我必须再次旋转设备。

我几乎可以确定问题出在我的XML上:

<item
android:id="@+id/botao_buscar"
android:title="@string/menu_buscar"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="android.support.v7.widget.SearchView"/>
Run Code Online (Sandbox Code Playgroud)

将“ showAsAction”属性更改为“ always”就像一种魅力。

有什么想法吗?

小智 1

我有类似的问题并这样解决。

在 onCreateOptionsMenu 中:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu, menu);

    MenuItem item = menu.findItem(R.id.search_option);

    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);

    searchView.setOnQueryTextListener(searchQueryListener);

    if(searchQuery!=null && !searchQuery.equals("")) {
        searchView.setIconified(false);
        searchView.setQuery(searchQuery,true);
        searchView.clearFocus();
    }

}
Run Code Online (Sandbox Code Playgroud)

对于 searchView 菜单项:

<item
    android:id="@+id/search_option"
    android:title="@string/button_search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always"/>
Run Code Online (Sandbox Code Playgroud)

就我而言,我有另一个菜单项,其图标位于搜索视图的右侧,这样在旋转设备时它可以正常工作。