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

Как заставить значок переполнения панели действий показать

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

Обратите внимание, что для контекстного меню всегда отображается значок переполнения, независимо от того, имеет ли устройство встроенную кнопку меню или нет.

Я понимаю, что принудительное появление значка переполнения на панели действий дублирует функциональность "физического". Вы можете подумать о том, что нарушаете правила проектирования андроидов. На мой взгляд, тем не менее, пользователи выигрывают. Они говорят, что это сбивает с толку, и я считаю, что они правы.

4b9b3361

Ответ 1

Поздравляем! Вы выиграли!

Как и в случае с Android 4.4, доступность в панели действий будет там, независимо от того, имеет ли устройство физическую кнопку MENU или нет. Google current Документ для определения совместимости теперь выглядит более решительно против наличия выделенной кнопки MENU.

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

try {
  ViewConfiguration config = ViewConfiguration.get(this);
  Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");

  if (menuKeyField != null) {
    menuKeyField.setAccessible(true);
    menuKeyField.setBoolean(config, false);
  }
}
catch (Exception e) {
  // presumably, not relevant
}

Этого не следует требовать на Android 4.4+, хотя с обработчиком исключений я бы не ожидал какой-либо конкретной проблемы, если вы запустите его, и когда-нибудь они избавятся от sHasPermanentMenuKey.

Лично я все равно не буду меняться на Android 4.3 и ниже, поскольку я подозреваю, что это ситуация с ударом-молью, где вы замените жалобы на отсутствие меню с жалобами на дублирование версий того же меню. Тем не менее, поскольку это официально одобренное поведение продолжается, у меня нет проблем с разработчиками, стремящимися к согласованности с более старыми устройствами.

Совет чаевых для комментатора по вопросу, который я подал в отношении этого, указав на изменение.

Ответ 2

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

<?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android" >


<item
    android:id="@+id/saveDetails"
    android:showAsAction="always"
    android:title="@string/save"/>

<item
    android:id="@+id/menu_overflow"
    android:icon="@drawable/dts"
    android:orderInCategory="11111"
    android:showAsAction="always">
    <menu>
        <item
            android:id="@+id/contacts"
            android:showAsAction="never"
            android:title="Contacts"/>


        <item
            android:id="@+id/service_Tasks"
            android:showAsAction="never"
            android:title="Service Tasks"/>


        <item
            android:id="@+id/charge_summary"
            android:showAsAction="never"
            android:title="Charge Summary"/>


        <item
            android:id="@+id/capture_signature"
            android:showAsAction="never"
            android:title="Capture Signature"/>
    </menu>
</item>

</menu>