0

我想知道如何做到这一点:当用户按下硬件搜索按钮时,它会在操作栏中打开一个搜索视图。

基本上我有一个活动托管片段。一个片段添加到 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();
}

但是当按下硬件搜索按钮时,我看不到如何打开搜索视图。

有什么提示吗?

谢谢 :)。

4

2 回答 2

1

所以,这里我是如何设法使用硬件搜索键在 sherlock 操作栏中打开搜索视图的:

在我的 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();
}
于 2013-07-17T15:36:58.597 回答
0

您可以展开搜索视图并将其折叠起来

searchView.setIconified(false); 
searchView.setIconified(true);

这样您就可以以编程方式调用搜索视图

于 2013-07-16T13:06:48.220 回答