本文介绍了搜索查看无法正常上先回preSS关闭(这只是失去焦点)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要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);
}
}
...
这篇关于搜索查看无法正常上先回preSS关闭(这只是失去焦点)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!