Как заставить меню переполнения на Android ActionBat Compat? - PullRequest
34 голосов
/ 06 января 2012

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

Ответы [ 3 ]

46 голосов
/ 28 января 2012

Меню переполнения действий доступно только в том случае, если на устройстве нет кнопки жесткого меню.Я обнаружил, что это указано в разделе «Темы фреймворка» в разделе «Интерфейс пользователя»> «Панель действий», ознакомьтесь с 3-й маркой здесь .

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

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

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

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

12 голосов
/ 13 февраля 2013

Ладно, это просто, но трудно понять.

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

<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!у вас есть меню переполнения!Надеюсь, я вам помог.:)

6 голосов
/ 30 октября 2013

Следуя совету 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>

...