13

I want to do an action bar that looks like this:

ActionBar

and I am not able to do this.

I tried to use that collapse thing described here, but it is not exactly what i want.

  • First of all SearchView isn't visible till user press search icon.. but I want It to be visible immediately after activity starts.
  • Secondly after SearchView appears all other action icons disappear.. But I want them to be visible all the time.
  • And it works only for android 3 and higher, I want it for android 2 and higher, so I am using ActionBarSherlock.

For example action bar in google maps looks similar to what I want.

Can somebody advise me how to achieve this?

4

2 回答 2

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);


}
于 2012-11-19T12:14:42.840 回答
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);
}

看看 setActionView(R.layout.action_search) - 这是您在 xml 文件中的文本视图。如果你希望你的其他动作图标总是出现,你应该使用MenuItem.SHOW_AS_ACTION_ALWAYS

于 2012-07-09T13:33:58.667 回答