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

Установка splitActionBarWhenNarrow из Java на Android

Мне интересно, можно ли сказать андроиду разделить ActionBar только тогда, когда я этого захочу, но на том же самом Activity. Мой вариант использования заключается в том, что по умолчанию действия, которые у меня есть на панели, являются ОК для свертывания, но при длительном нажатии на элемент я вхожу в режим "Редактировать задачу", где панель действий используется для предоставления некоторых сокращений отредактируйте задачу. Я бы хотел, чтобы этот "режим редактирования" использовал панель действий split, так как у нее есть значок, который лучше видеть сразу, и держать панель действий "не разделена" для общего вида - там, где это просто "настройки", и др.

Итак, вопрос в том, могу ли я установить android:uiOptions="splitActionBarWhenNarrow" из кода вместо жесткого кода в манифесте?

PS: Я использую ActionBar Sherlock.

4b9b3361

Ответ 1

Собственная панель действий может быть установлена ​​в режим разделения, вызвав getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW).

Параметры пользовательского интерфейса Windows не могут быть прочитаны после их установки, поэтому с помощью ActionBarSherlock вы должны вызвать getSherlock().setUiOptions(...). Вам не нужно звонить обоим. ABS будет автоматически вызывать вышеуказанное, когда это необходимо.

Это должно быть сделано до создания декора. Самое безопасное место, чтобы поставить этот вызов, чтобы всегда было в вашей деятельности onCreate метод до, вы вызываете super.onCreate.

Ответ 2

Взгляните на ActionBarSherlockSamples, SplitActionModes.java. В этом примере, когда нажата кнопка "Пуск", в нижней части экрана отображается панель действий разделения:

Вызовите это, чтобы отобразить панель действий split:

mMode = startActionMode(new AnActionModeOfEpicProportions());

mMode - это тип ActionMode, и вам нужно называть его "finish()", когда вы хотите, чтобы панель действий исчезла.

AnActionModeOfEpicPropotions - это реализация ActionMode.Callback:

private final class AnActionModeOfEpicProportions implements ActionMode.Callback {
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // add your menu here...
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // handles your action menu clicked event
        return true;
    }
}

Ответ 3

Я просто пытался, если бы у меня мог быть ActionBar в одном Activity и Split один в другом.

Я добавил панель действий в onCreateOptionsMenu в обоих действиях и добавил   . GetWindow() setUiOptions (ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);

прямо перед onCreate в деятельности, которую я хотел разделить, и, к моему удивлению, это сработало.:)

Затем я использовал getActionBar(). hide(), чтобы скрыть панель действий split при нажатии кнопки, и она тоже сработала.

Я предполагаю, что если вы можете попробовать это, вы можете получить эту работу и настроить для своих нужд. Скрыв его сначала, а onLongClick покажет его и после того, как будут предприняты необходимые действия, снова спрятайте его. (Единственное, что я пропустил, это проверить это с помощью библиотек поддержки. Будет делать и обновлять вас)

Надеюсь, это может помочь вам каким-то образом. Счастливое кодирование:)

Ответ 4

private final class AnActionModeOfEpicProportions implements ActionMode.Callback
{
  @Override
  public boolean onCreateActionMode(ActionMode mode,Menu menu)
  {
    // add your menu here...
  }
  @Override
  public boolean onActionItemClicked(ActionMode mode,MenuItem item)
  {
    // handles your action menu clicked event
    returntrue;
  }
}