如果选项卡位置发生更改或通过调用onPageChangeListener,请关闭searchview

And*_*ner 6 android actionbarsherlock searchview

我有一个活动从我加载6个片段.三个片段中的六个具有搜索视图,其余三个片段没有实现搜索视图.

我在其中制作了两个menu.xml

  • 一个具有searchview和commonitem的动作栏和其他
  • 一个没有searchview并包含常见项

现在,如果我在第一个选项卡中展开搜索视图,然后移动到第二个选项卡,searchview仍然打开(我知道它是第二个选项卡的搜索视图,因为我已经为每个片段实现了onCreateOptionMenu()),我不知道不想要.

我想要的是当我移动到第一个片段到第二个或第三个,那时searchview应该折叠并且只点击searchview(在当前片段中它应该被扩展).

此外,如果我移动到第一个片段到第2个,第3个和第4个(我的帐户信息片段,在操作栏中不包含searchview),那么在第4个片段中我仍然可以在开放模式下获得searchview ...

另一件我想知道的事情是,点击搜索视图会扩展并弹出软键盘,这是搜索视图(扩展和打开键盘)的默认行为吗?

我想点击搜索视图的文本(编辑文本)区域时打开键盘.

希望明确....任何建议/链接将不胜感激......

如果您需要我更多细节,请告诉我.....

编辑::

应用SD的解决方案

测试2.3.6

1)当我在第一个片段时(第一个标签)

在此输入图像描述

2)在相同的片段中扩展后::

在此输入图像描述

3)移动到下一个片段(Tab,通过保持searchview打开)::

在此输入图像描述

测试4.2.1 ::

1)当我在第一个片段时(第一个标签)

在此输入图像描述

2)在相同的片段中扩展后::

在此输入图像描述

3)移动到下一个片段(Tab,通过保持searchview打开)::

在此输入图像描述

我已经在我的容器活动中设置了'setIconified(true)'(我的所有片段都被编码)在下面的方法::

@Override
public void onPageSelected(int position)
{
    if (searchView!=null && !searchView.isIconified()) {  //true == searchView closed
        searchView.setIconified(true);  
        searchView.setIconified(true);  
    }
    actionBar.setSelectedNavigationItem(position);
}

@Override
public void onTabSelected(Tab tabposition, FragmentTransaction fragmentposition) {
    if (searchView!=null && !searchView.isIconified()) {  //true == searchView closed
        searchView.setIconified(true);  
        //searchView.setIconified(true);  
    }
    awesomePager.setCurrentItem(tabposition.getPosition());
}
Run Code Online (Sandbox Code Playgroud)

lon*_*ngi 5

要关闭SearchView您可以使用searchview.setIconified(true). 所以在你的片段中onPause你可以调用:

 public void onPause() {  //not sure if you should use onDestroyView() instead
    super.onPause();

    if (!yourSearchView.isIconified()) {  //true == searchView closed
        yourSearchView.setIconified(true);  
    }
 }
Run Code Online (Sandbox Code Playgroud)

的自定义行为SearchView是显示您的键盘。如果您单击“搜索”图标,SearchView将自动弹出 ,并且“搜索文本字段”将被聚焦,从而自动打开键盘。但是,您应该能够删除文本视图的焦点,这将关闭键盘。检查这里


S.D*_*.D. 5

搜索视图实现有点奇怪我不确定它是一个bug还是预期的功能.要正确折叠SearchView,您必须调用setIconified(true)两次.第一次调用有时会清除文本,第二次调用会实际崩溃.