我想知道如何做到这一点:当用户按下硬件搜索按钮时,它会在操作栏中打开搜索视图。
基本上我有一个托管片段的活动。 一个片段添加到ActionbarSherlock一个搜索视图,它工作正常:
@Override
public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu,
MenuInflater inflater) {
if(searchView==null)
searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());
searchView.setQueryHint(getString(R.string.search));
searchView.setOnQueryTextListener(this);
menu.add(Menu.NONE, R.string.search, Menu.NONE, R.string.search)
.setIcon(R.drawable.abs__ic_search_api_holo_light)
.setActionView(searchView)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
super.onCreateOptionsMenu(menu, inflater);
}
我想我也可以使用
捕获FragmentActivity中的硬件密钥@Override
public boolean onSearchRequested() {
//DO SOMETHING
return super.onSearchRequested();
}
但是,当按下硬件搜索按钮时,我看不到如何打开搜索视图。
任何提示?
谢谢:)。
答案 0 :(得分:1)
所以,在这里我如何设法使用硬件搜索键在sherlock操作栏中打开searchview:
在我的SherlockFragmentActivity中:
private Menu ABSMenu;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
ABSMenu = menu;
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onSearchRequested() {
MenuItem mi = ABSMenu.findItem(R.string.search); // R.string.search is the id of the searchview
if(mi!=null){
if(mi.isActionViewExpanded())
{
mi.collapseActionView();
}else
{
mi.expandActionView();
}
}
return super.onSearchRequested();
}
答案 1 :(得分:0)
您可以展开搜索视图并将其折叠为
searchView.setIconified(false);
searchView.setIconified(true);
这样您就可以以编程方式调用搜索视图