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

Как заставить переполнение меню на Android-панели?

Совместимость планшета Android
Является ли это возможным? На старых устройствах (до 3.0) элементы, которые не соответствуют панели действий, отображаются только при нажатии клавиши меню, я хочу, чтобы эти элементы были сгруппированы в меню переполнения панели действий.

4b9b3361

Ответ 1

Меню переполнения действия доступно только в том случае, если на устройстве нет жесткой кнопки меню. Я нашел это в разделе "Рамочные темы" в разделе "Пользовательский интерфейс" > "Панель действий", проверьте 3-й маркер здесь.

Существует библиотека действий, написанная Джейком Уортоном под названием ActionBarSherlock. Возможно, это может предоставить вам стиль меню переполнения действий, даже если на старых устройствах (включая жесткую кнопку меню), однако я не рассматривал это.

Изменить: ActionBarSherlock 4.0 (в настоящее время кандидат на выпуск) имеет встроенные функции для принудительного переполнения действий. Если вы хотите расширить пример ActionBarCompat самостоятельно, вы можете взглянуть на github, чтобы получить представление о том, как Джейк реализовал его. Я бы предложил просто изучить его библиотеку вместе, так как это очень хорошо сделано.

Если вы решите использовать библиотеку Jake, изучите настройку темы Activity как @style/Theme.Sherlock.ForceOverflow, чтобы заставить меню переполнения на более старых устройствах.

Edit2: Использование темы ForceOverflow вызывает проблемы (пример № 1) на устройствах с аппаратной кнопкой меню, Таким образом, Джейк Уортон собирается удалить ForceOverflow в будущих версиях.

Ответ 2

Хорошо, это просто, но сложно понять.

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

<item
        android:id="@+id/a_More"
        android:icon="@drawable/more"
        android:showAsAction="always"
        android:title="More">
        </item>

После того, как у вас есть элемент, добавьте подменю, содержащее ваши элементы, которые вы хотите в меню переполнения. Пример:

<item
    android:id="@+id/a_More"
    android:icon="@drawable/more"
    android:showAsAction="always"
    android:title="More">
    <menu>
        <item
            android:id="@+id/aM_Home"
            android:icon="@drawable/home"
            android:title="Home"/>
    </menu>
</item>

По щелчку это раздувает другие предметы внутри. Мое приложение использует ActionBarSherlock 4.0, поэтому прежде чем это будет работать для вас, вам нужно получить доступ к "SplitActionBar". (Будет по-прежнему работать на панели действий по умолчанию android)

Вот как: В вашем файле AndroidManifest.xml вам нужно добавить этот код под действие, в котором вы нуждаетесь в меню переполнения. Честно говоря, неважно, есть ли у вас раскол или нет, но я предпочитаю его.

android:uiOptions="splitActionBarWhenNarrow"

ПРИМЕЧАНИЕ. Ваш элемент, который раздувает меню переполнения, ДОЛЖЕН showAsAction="always"

Vwola! у вас есть меню переполнения! Надеюсь, я помог тебе.:)

Ответ 3

Следуя предложению LeviRockerSk8er, я заставил иметь меню переполнения в панели действий следующим образом:

Это код для "menu.xml":

<item
    android:id="@+id/web_clasica"
    android:icon="@drawable/ic_action_web_site"
    android:showAsAction="ifRoom"
    android:title="@string/menu_web"
    />
<item
    android:id="@+id/overflow_fijo"
    android:icon="@drawable/ic_action_core_overflow"
    android:showAsAction="always"
    android:title="@string/menu_email"
   >
   <menu>
    <item
    android:id="@+id/email"
    android:icon="@drawable/ic_action_new_email"
    android:showAsAction="ifRoom"
    android:title="@string/menu_email"
   />
    <item
    android:id="@+id/share"
    android:icon="@drawable/ic_action_share"
    android:showAsAction="ifRoom"
    android:title="@string/menu_share"
    />
    <item
    android:id="@+id/about"
    android:showAsAction="ifRoom"
     android:icon="@drawable/ic_action_action_about"
    android:title="@string/menu_about"/>
</menu>