Подтвердить что ты не робот

Панель действий Android с функцией поиска

Я хочу сделать панель действий, которая выглядит так:

ActionBar

и я не могу этого сделать.

Я попытался использовать эту вещь коллапса, описанную здесь здесь, но это не совсем то, что я хочу.

  • Прежде всего SearchView не отображается, пока пользователь не нажмет значок поиска. но я хочу, чтобы он был видимым сразу после запуска активности.
  • Во-вторых, после появления SearchView все остальные значки действий исчезают. Но я хочу, чтобы они были видны все время.
  • И он работает только для android 3 и выше, я хочу его для android 2 и выше, поэтому я использую ActionBarSherlock.

Например, панель действий на картах google похожа на то, что я хочу.

Может кто-нибудь посоветует мне, как это сделать?

4b9b3361

Ответ 1

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


}

Ответ 2

Если вы используете 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 файле. Если вы хотите, чтобы ваши другие значки действий были apeear всегда, вы должны использовать MenuItem.SHOW_AS_ACTION_ALWAYS