Сделать вкладки на ActionBar прокручивать при достижении предела, а не создавать раскрывающийся список - PullRequest
13 голосов
/ 14 февраля 2012

Как видно из названия, у меня есть приложение Android 4.0 Tablet, которое использует панель действий и режим вкладок.

Если я добавлю более 4 или 5 вкладок на панель действий, вместо этого будет создан раскрывающийся список. Я прочитал документацию, в которой говорится: «Примечание. В некоторых случаях система Android отображает вкладки панели действий в виде раскрывающегося списка, чтобы обеспечить наилучшее размещение на панели действий».

Было просто интересно, можно ли переопределить поведение по умолчанию и получить панель действий для прокрутки элементов? Проектный документ http://developer.android.com/design/patterns/actionbar.html говорит о прокручиваемых вкладках, но я не могу найти на них никакой информации, кроме как в проектном документе.

Ответы [ 4 ]

10 голосов
/ 10 августа 2012

Я изо всех сил пытался заставить это работать.Однако после игры с ActionBarSherlock решение становится невероятно простым.Если вы скачаете образец исходного стиля Styled и загляните в класс MainActivity, вы увидите, что он создает и добавляет вкладки, а под ним:

actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

Я назвал эти ПЕРЕД добавлением вкладок, и мои вкладки имелибыл превращен в раскрывающийся список.Оказывается, все, что вам нужно сделать, это вызвать их после добавления вкладок, чтобы сохранить вкладки прокрутки.

2 голосов
/ 29 февраля 2012

Прочтите раздел «Добавление вида действия» из http://developer.android.com/guide/topics/ui/actionbar.html

Представление действия - это виджет, который отображается на панели действий вместо кнопки элемента действия.

Вы можете использовать HorizontalScrollView в качестве вида действия, указав

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/mytabwidget"
      android:title=""
      android:icon="@drawable/ic_launcher"
      android:showAsAction="always"
      android:actionViewClass="android.widget.HorizontalScrollView" />
</menu>

Получить ссылку на это HorizontalScrollView в public boolean onCreateOptionsMenu(Menu menu)

Определите RadioGroup с некоторыми RadioButton, где каждый RadioButton при выборе обновит содержимое связанных с ним вкладок. Теперь добавьте это RadioGroup к HorizontalScrollView, которое вы получите в public boolean onCreateOptionsMenu(Menu menu)

Вы можете использовать selectTab(ActionBar.Tab tab) или другой эквивалентный метод для обновления содержимого вкладок.

Вы можете изменить внешний вид RadioButton, установив android:button на прозрачное изображение, а затем установив некоторое значение StateListDrawable с отмеченными состояниями, выбранными и нормальными.

См. Ниже экран, который я получил, используя этот метод.

enter image description here

На изображении выше, каждый RadioButton, когда отмечен, выбирает другую вкладку.

0 голосов
/ 05 марта 2012

Интерфейс работает так, как есть по причине.Это очень запутанно иметь прокручиваемый набор вкладок.Есть большая вероятность, что совсем не будет понятно, что справа есть больше вкладок, и пользователь никогда не узнает, что он может прокручивать вкладки, чтобы получить больше возможностей.

Я рекомендую придерживатьсяс тем, как платформа предназначена для работы.Это обычно делает вещи по причине.

0 голосов
/ 14 февраля 2012

Вы уже просмотрели пример приложения Honeycomb Gallery в SDK?Это может иметь то, что вы ищете.Установите его на не планшетном устройстве ICS, чтобы увидеть прокручиваемые вкладки.На планшете слишком много места для прокрутки.

http://developer.android.com/resources/samples/HoneycombGallery/index.html

...