Как управлять разделением ActionBar программно?

Android ActionBar может разделяться на верхнюю и нижнюю панели, если для параметра активности "uiOptions" установлено значение "splitActionBarWhenNarrow", обратите внимание, что этот параметр действителен только в ICS.

Honeycomb представила новый подход к множественному выбору элементов списка с помощью панели действий. Когда элемент находится под нажатием и удержанием, список переходит в режим множественного выбора, и панель действий может использоваться для выполнения некоторых действий. Настройка панели действий унаследована от активности списка, т. е. если активность имеет разделенную панель действий, мультивыбор тоже будет, а если активность имеет только верхнюю панель, то мультивыбор будет соответствовать этому.

Вопрос в том, возможно ли иметь в действии только верхнюю панель действий, а когда список переходит в режим множественного выбора, программно разделить панель действий?

Спасибо!


person paulovic    schedule 25.11.2011    source источник
comment
Я бы тоже хотел, чтобы у него была такая функция.   -  person Christopher Perry    schedule 12.02.2012
comment
Ну, вы всегда можете сделать пользовательский нижний бар, который будет выше, если одна ситуация, и ниже, если, как вы сказали, показан список   -  person piotrek1543    schedule 31.12.2015
comment
пожалуйста, перейдите по ссылкам ниже, чтобы проверить, как это сделать   -  person piotrek1543    schedule 31.12.2015


Ответы (5)


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

Аналог установщика для android:uiOptions находится на Window, а не на Activity. Window#setUiOptions — метод и использовать флаг ActivityInfo#UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW.

Однако это не будет делать то, что вы хотите. Разделить панель действий, когда она узкая, необходимо указать, так как окно сначала настраивается до инициализации декора окна. Другими словами, после того, как окно было отображено (или даже после того, как вы вызвали setContentView), уже слишком поздно его менять.

Это было сознательное решение команды Android UX. Режимы действий (включая режимы выбора) предназначены для отражения конфигурации панели действий в текущем действии. Это дает пользователю единое место для поиска допустимых в данный момент действий в пределах одного и того же действия.

person adamp    schedule 26.11.2011
comment
Да, но мои пользователи, похоже, с трудом находят контекстные действия в режиме действий, так как большинство из них попадает в дополнительное меню из-за текста X Selected, информирующего их о том, сколько элементов они выбрали в данный момент. - person Christopher Perry; 12.02.2012
comment
Если этот конкретный режим действия является важной частью вашего пользовательского интерфейса и предоставляет множество опций, вы можете рассмотреть возможность использования разделительной панели на постоянной основе для этого действия. - person adamp; 14.02.2012

Я так не думаю. Я не вижу в Activity ничего, что могло бы служить аналогом android:uiOptions для установки.

person CommonsWare    schedule 25.11.2011

Пакет AppCompat теперь предлагает виджет панели инструментов, который позволяет размещать панель действий в любом месте макета и изменять ее, как и любое другое представление.

См. полную документацию здесь и руководство здесь.

person Jacob Tabak    schedule 14.11.2014

Можете ли вы попытаться установить getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW) в Activity, которое вы хотите, чтобы ActionBar отображалось как разделенное прямо перед его onCreate(), затем скройте его, используя getActionBar.hide(), и в действии списка, на которое вы ссылаетесь, чтобы оно снова всплывало, используя getActionBar.show().

Я попытался (но не с помощью библиотек поддержки) показать ActionBar в одном Activity и разделить в другом, используя приведенное выше, и смог скрыть и показать разделение при нажатии кнопки. Надеюсь это поможет. Дайте мне знать, если это произошло или даже не произошло. Удачного кодирования. :)

person Atul O Holic    schedule 06.02.2014

Вы можете использовать две Панели инструментов. Взгляните на эти вопросы:

Разделенная панель действий AppCompat v7:21 не работает?

Как центрировать меню действий на панели инструментов

person kotucz    schedule 03.03.2015