Сделать вкладки в ActionBar прокручивать, когда достигнут предел, а не создавать выпадающий список
Как видно из названия, у меня есть приложение Android 4.0 Tablet, в котором используются Actionbar и режим вкладок.
Если я добавлю в панель действий больше 4 или 5 вкладок, вместо этого создается раскрывающийся список. Я прочитал документацию, в которой говорится: "Примечание. В некоторых случаях система Android будет отображать вкладки панели действий в виде раскрывающегося списка, чтобы обеспечить наилучшую посадку в панели действий".
Было просто интересно, можно ли переопределить поведение по умолчанию и заставить панель действий прокручивать элементы? В конструкторском документе http://developer.android.com/design/patterns/actionbar.html говорится о прокручиваемых вкладках, но я не могу найти никакой информации о них, кроме как в конструкторском документе.
Ответы
Ответ 1
Я изо всех сил пытаюсь заставить это работать. Тем не менее, после игры с ActionBarSherlock, решение раздражающе легко. Если вы загружаете образец Styled source и смотрите в классе MainActivity, вы можете увидеть его создание и добавление вкладок и ниже:
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Я назвал их ПЕРЕД добавлением вкладок, и мои вкладки были превращены в раскрывающийся список. Оказывается, все, что вам нужно сделать, это вызвать их после добавления вкладок, чтобы сохранить вкладки прокрутки.
Ответ 2
Прочтите раздел "Добавление вида действия" из 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
, когда установлен, выбирает другую вкладку.
Ответ 3
Вы проверили образец приложения Honeycomb Gallery в SDK? У него может быть то, что вы ищете. Установите его на не-планшетное устройство ICS, чтобы просмотреть прокручиваемые вкладки. Планшет имеет слишком большое пространство для прокрутки.
http://developer.android.com/resources/samples/HoneycombGallery/index.html
Ответ 4
Пользовательский интерфейс работает так, как по какой-то причине. Очень сложно использовать прокручиваемый набор вкладок. Существует хорошая вероятность, что совершенно не ясно, что справа есть больше вкладок, и пользователь никогда не узнает, что они могут прокручивать вкладки, чтобы получить больше возможностей.
Я рекомендую придерживаться того, как платформа предназначена для работы. Обычно это происходит по какой-то причине.