我要preSS的后退按钮两次,以关闭搜索查看
。为什么?在第一个preSS,在搜索查看
只是失去专注......
在设置 setOnKeyListener
搜索查看
也不管用...
顺便说一句,我使用的是ABS执行...
我的code是简单,如下所示:
mMenuItemSearch = menu.findItem(R.id.search);
mSearchView =新的搜索查看(getSupportActionBar()getThemedContext());
mMenuItemSearch.setActionView(mSearchView);
mSearchView.setOnQueryTextListener(新SearchView.OnQueryTextListener()
{
公共布尔onQueryTextChange(字符串newText)
{
mPagerManager.getFragment(mSelectedPos).adapter.getFilter()过滤器(newText)。
返回true;
}
公共布尔onQueryTextSubmit(查询字符串)
{
返回true;
}
});
解决方案
我解决了这种方式:
...
公共类MyFragment扩展片段实施SearchView.OnFocusChangeListener< ----
...
@覆盖
公共无效onFocusChange(视图V,布尔hasFocus){
菜单项菜单项= menu.findItem(R.id.action_search);
搜索查看SV =(搜索查看)MenuItemCompat.getActionView(菜单项);
如果(!hasFocus){
sv.onActionViewCollapsed(); < ----
interactionListener.showDrawerToggle(真正的); < ----
}
}
...
公共无效configureSearchView(功能菜单){
this.menu =菜单;
菜单项菜单项= menu.findItem(R.id.action_search);
搜索查看SV =(搜索查看)MenuItemCompat.getActionView(菜单项);
sv.setOnSearchClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
interactionListener.showDrawerToggle(假);
}
});
sv.setOnQueryTextListener(本);
sv.setOnCloseListener(本);
sv.setSubmitButtonEnabled(假);
sv.setIconifiedByDefault(真正的);
sv.setOnQueryTextFocusChangeListener(本); < ----
如果(initialQuery!= NULL){
sv.setIconified(假);
menuItem.expandActionView();
sv.setQuery(initialQuery,真正的);
}
}
...
I have to press the backbutton twice, to close the SearchView
. Why? On the first press, the SearchView
only looses focus...
Setting setOnKeyListener
on SearchView
does not work either...
Btw, I'm using the ABS implementation...
My code is simple and looks like the following:
mMenuItemSearch = menu.findItem(R.id.search);
mSearchView = new SearchView(getSupportActionBar().getThemedContext());
mMenuItemSearch.setActionView(mSearchView);
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
public boolean onQueryTextChange(String newText)
{
mPagerManager.getFragment(mSelectedPos).adapter.getFilter().filter(newText);
return true;
}
public boolean onQueryTextSubmit(String query)
{
return true;
}
});
解决方案
I solved it this way:
...
public class MyFragment extends Fragment implemented SearchView.OnFocusChangeListener <----
...
@Override
public void onFocusChange(View v, boolean hasFocus) {
MenuItem menuItem = menu.findItem(R.id.action_search);
SearchView sv = (SearchView)MenuItemCompat.getActionView(menuItem);
if(!hasFocus) {
sv.onActionViewCollapsed(); <----
interactionListener.showDrawerToggle(true); <----
}
}
...
public void configureSearchView(Menu menu) {
this.menu = menu;
MenuItem menuItem = menu.findItem(R.id.action_search);
SearchView sv = (SearchView)MenuItemCompat.getActionView(menuItem);
sv.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
interactionListener.showDrawerToggle(false);
}
});
sv.setOnQueryTextListener(this);
sv.setOnCloseListener(this);
sv.setSubmitButtonEnabled(false);
sv.setIconifiedByDefault(true);
sv.setOnQueryTextFocusChangeListener(this); <----
if(initialQuery != null) {
sv.setIconified(false);
menuItem.expandActionView();
sv.setQuery(initialQuery, true);
}
}
...