带有搜索视图的Android操作栏

Voj*_*toš 13 android actionbarsherlock

我想做一个看起来像这样的动作栏:

动作条

我无法做到这一点.

我试图使用这里描述的崩溃事物,但它并不完全是我想要的.

  • 首先,SearchView直到用户按下搜索图标才能看到..但我希望它在活动开始后立即可见.
  • 其次,在SearchView出现之后,所有其他操作图标都会消失..但我希望它们始终可见.
  • 它只适用于Android 3及更高版本,我希望它适用于Android 2及更高版本,所以我使用的是ActionBarSherlock.

例如,谷歌地图中的操作栏看起来与我想要的类似.

有人可以告诉我如何实现这一目标吗?

Zzo*_*okk 14

ActionbarSherlock是一个很棒的库.最新的(4.2.0)版本具有使活动开始时搜索视图可见的方法SearchView.setIconified(boolean);

因此,如果要使搜索视图始终可见,则应使用以下代码:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    //Create the search view
    SearchView searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());
    searchView.setQueryHint("Search for countries…");
    searchView.setIconified(false);

    menu.add("Search")
            .setIcon(R.drawable.abs__ic_search)
            .setActionView(searchView)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);


}
Run Code Online (Sandbox Code Playgroud)


Geo*_*zov 6

如果你使用actionbarsherlock,你必须像这样做

 @Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    menu.add(0, 1, 1, R.string.ac_refresh ).setIcon(R.drawable.ic_navigation_refresh).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    menu.add(0, 2, 2, R.string.ac_settings).setIcon(R.drawable.ic_action_settings).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    menu.add(0, 3, 3, R.string.ac_favourite).setIcon(isFavouriteChannel(channel) ? R.drawable.ic_rating_important : R.drawable.ic_rating_not_important).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    menu.add(0, 4, 4,  R.string.ac_search  ).setIcon(R.drawable.ic_action_search).setActionView(R.layout.action_search)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

看一下setActionView(R.layout.action_search) - 这是xml文件中的文本视图.如果你想要你的其他动作图标总是你应该使用MenuItem.SHOW_AS_ACTION_ALWAYS