Android BackButton и вкладки ActionBar

Я хочу создать ActionBar и вкладку навигации, например google +.

Я использовал этот пример в качестве отправной точки, и теперь у меня отличная панель действий:

Я также включил ViewPager и TabHost, чтобы иметь вкладки и прокручивать левые/правые фрагменты.

Мне нужно показать обратную стрелку в версии до соты. Если я устанавливаю getActionBar().setDisplayHomeAsUpEnabled(true), стрелка автоматически отображается в версии >= сотовый.

  • Как я могу сделать это в версии до меда?

То, что я также хочу иметь, - это вкладки, подобные Google +.

Вот как выглядит панель вкладок:

удалена мертвая ссылка ImageShack

... и это то, что я хочу:

удалена мертвая ссылка ImageShack

Я не могу найти какой-либо пример для стилей таблиц табуляции, подобных этому.

Ответ 1

Я бы рекомендовал вам ActionBarSherlock для совместимости ActionBar с Android < 3. Это более эффективная реализация, представленная на странице разработчиков.

Используя этот пакет, стрелка назад появится, когда вы добавите в свою деятельность следующую строку.

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Что касается вкладок Google+, я нашел виджет ViewFlow очень полезным и выглядящим точно таким же. Более того, у вас нет проблем с обратной совместимостью. Посмотрите на пример CircleFlowIndicator.

Ответ 2

Вы можете использовать ActionBarSherlock и ViewPager с ViewPagerIndicator, чтобы добиться желаемого внешнего вида. Эти библиотеки также работают до ICS.

Как предложил miguel.rodelas, используйте getSupportActionBar(). setDisplayHomeAsUpEnabled (true) для домашней стрелки. В onOptionsItemSelected вы можете поймать его id android.R.id.home.

Ответ 3

ActionBar actionBar = getActionBar();
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowTitleEnabled(false);

//используем ваше собственное представление xml здесь

View actionBarView = getLayoutInflater().inflate(R.layout.action_bar_custom_view, null);
        actionBar.setCustomView(actionBarView);
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

//ваша логика для указателя кликов

setListenerForActionBarCustomView(actionBarView);

Ответ 4

Как указано, загрузите ActionBarSherlock и импортируйте его как библиотеку здесь https://api.github.com/repos/JakeWharton/ActionBarSherlock/zipball/4.2.0

  • Вместо использования getActionBar используйте getSupportActionBar
  • Загрузите библиотеку поддержки
  • Вместо активности расширьте свой класс как SherlockActivity
  • То же, что и фрагменты, используйте "Шерлок-Фрагмент"

Затем просто скопируйте свой код, он должен работать отлично.