Как показать элементы меню переполнения в панели действий на Android
Я пишу приложение для Android, в котором я пытаюсь показать пункты меню переполнения ActionBar
используя эту замечательную ссылку: http://wptrafficanalyzer.in/blog/adding-action-items-and-overflow-menu-items-to-action-bar-in-android/
Проблема:
Not getting Overflow Menu Items (Icon)
Пожалуйста, смотрите ниже Экранный снимок для большей ясности:
![enter image description here]()
Manifest.xml:
<uses-sdk android:minSdkVersion="14" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:uiOptions="splitActionBarWhenNarrow"
>
items.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/phone"
android:title="@string/phone"
android:icon="@drawable/phone"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/computer"
android:title="@string/computer"
android:icon="@drawable/computer"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/gamepad"
android:title="@string/gamepad"
android:icon="@drawable/gamepad"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/camera"
android:title="@string/camera"
android:icon="@drawable/camera"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/video"
android:title="@string/video"
android:icon="@drawable/video"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/email"
android:title="@string/email"
android:icon="@drawable/email"
android:showAsAction="ifRoom|withText"
/>
</menu>
Я использую этот учебник и пытаюсь сделать Рисунок 6: Элементы действия и меню переполнения в панели действий Split
Пожалуйста, помогите мне показать пункты меню переполнения (ICON) в ActionBar
Теперь, когда я нажимаю кнопку "Меню" в эмуляторе, я получаю пункты меню "Отдых".
Ответы
Ответ 1
Чтобы показать значок с тремя точками, в панели действий, просто используйте метод ниже в своем OnCreate():
private void getOverflowMenu() {
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) {
e.printStackTrace();
}
}
Ответ 2
Просто сказать, что если ваше устройство имеет кнопку меню, значок переполнения не будет отображаться, на новых телефонах отобразится кнопка переполнения. Я бы не рекомендовал ответ ASMUIRTI, поскольку это ужасный взлом, который нарушает согласованность с остальными приложениями на платформе.
вы должны использовать
android:showAsAction="never"
и пусть устройство android решит, требуется ли для этого устройства меню переполнения.
Ответ 3
Это может быть другая работа, которая действительно помогла мне. Держите одну выталкиваемую с тремя точками и дайте ей как пункт меню.
<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>
Ответ 4
Если я правильно понял ваш вопрос и вы хотите показать все ваши значки на панели действий, измените эти параметры в пунктах меню
android:showAsAction="ifRoom|withText"
к этому
android:showAsAction="always"
Ответ 5
Если вы используете вспомогательные библиотеки, чтобы отображать пункты меню в панели действий, вы должны использовать следующий синтаксис в своем xml:
yourappname:showAsAction="ifRoom|withText"
Ответ 6
Телефоны, на которых есть аппаратная кнопка меню, показывают дополнительные пункты меню при нажатии на кнопку аппаратного обеспечения. Новые телефоны, без кнопки меню оборудования, автоматически добавляют значок меню переполнения в панель действий.
Дополнительные пункты меню - это те, у которых свойство showAsAction установлено никогда.
Ответ 7
В AndroidManifest.xml между add
android:theme="@android:style/Theme.Holo.Light"
который добавляет панель действий в ваше приложение.
После этого перейдите в menu.xml и добавьте следующие
xmlns:tools="http://schemas.android.com/tools
между
Наконец, в каждом элементе добавьте
android:showAsAction="always"
tools:ignore="AppCompatResource"