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

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

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

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

Поздравляем! Ты победил!

Начиная с Android 4.4, доступность в панели действий будет там, независимо от того, имеет ли устройство физическую кнопку MENU или нет. Существующий в настоящее время документ для определения совместимости Google выглядит более решительно против наличия специальной кнопки 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 и ниже, поскольку я подозреваю, что это ситуация с ударом-молью, где вы замените жалобы на отсутствие меню с жалобами на дублирование версий того же меню. Тем не менее, поскольку это уже официально одобренное поведение в будущем, у меня нет проблем с разработчиками, стремящимися к согласованности с более старыми устройствами.

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

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

             
  • Как получить высоту ActionBar?
  • Не удается найти Theme.AppCompat.Light для новой поддержки Android ActionBar
  • Переключение между изображениями Android Navigation Drawer и Up caret при использовании fragmentов
  • Установите вкладки ActionBar внизу в ActionBarActivity
  • Как выровнять название в центре ActionBar в теме по умолчанию (Theme.Holo.Light)
  • actionlayout на menuitem ничего не делает
  • Как объявить панель инструментов с расширенной высотой / панель действий на Android Lollipop?
  • Заполнение между иконкой и заголовком ActionBar
  • Навигационные режимы панели действий устарели в Android L
  • Как получить панель инструментов из fragmentа?
  • Показать стрелку на панели инструментов
  • Давайте будем гением компьютера.