#android #android-actionbar
#Android #android-панель действий
Вопрос:
Кто-нибудь может объяснить, почему новые устройства, такие как. Google Nexus 5 показывает кнопку переполнения на панели действий, даже если у нее есть кнопка аппаратного меню, а параметры меню определены как «никогда»?
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@ id/menuSettings"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@ id/menuOff"
android:showAsAction="never"
android:title="@string/action_exit"/>
</menu>
Прежде чем я забуду, я использую AppCompact7, и кнопка переполнения не отображается на других устройствах, таких как. Samsung S3 / S4 с теми же настройками.
Комментарии:
1. это должно быть проблемой xml, используйте
youapp:showAsAction
вместоandroid:showAsAction
, кнопка переполнения AFAIK, не отображается в S2 / S3 / S4 … поскольку уже есть кнопка меню, которая делает ее избыточной. Итак, я считаю, что Сэмми изменил структуру в соответствии с их требованиями. Если он не работает правильно на Nexus, он работает не так, как задумано .
Ответ №1:
android:showAsAction="never"
означает, что элемент не будет отображаться в виде значка на панели действий, он, тем не менее, будет размещен внутри меню переполнения (или обычного меню, если на устройстве есть кнопка аппаратного меню).
Комментарии:
1. И есть ли какой-нибудь способ заставить не показывать меню переполнения? 🙂
2. Насколько я знаю, нет. Я имею в виду, что людям также приятно всегда иметь меню в одном и том же месте, поэтому мне лично нравится, что меню переполнения применяется для устройств без кнопки меню.
Ответ №2:
Если у вас есть приложение с библиотекой AppCompat, вам следует использовать app:showAsAction
вместо:
Таким образом, меню будет выглядеть так:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@ id/menuSettings"
app:showAsAction ="never"
android:title="@string/action_settings"/>
<item
android:id="@ id/menuOff"
app:showAsAction="never"
android:title="@string/action_exit"/>
</menu>
это типичная проблема, которая упускается из виду при использовании AppCompat, это должно быть указано в ошибке lint (я не могу ручаться за Eclipse, но AndroidStudio lint показывает это)
Ответ №3:
Android — развивающаяся ОС. В старой версии Android было 4 аппаратных клавиши (частично) Меню, Поиск, домой и обратно. Затем Google решил отказаться от ключа поиска. На уровне api 14 я предполагаю, что клавиша меню была признана ненужной, и была добавлена клавиша множественного выбора (имеет тот же код ключа, что и меню). Nexus 5 не имеет клавиши меню. Он добавляет 3 точки сверху или снизу макета, предоставляя аналогичную функциональность в качестве клавиши меню и доступную аналогично старым классам xml и Java, связанным с меню.