Элементы меню не отображаются на панели действий

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

menu_activity.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_lang" android:showAsAction="always" android:title="@string/menu_lang" android:icon="@android:drawable/ic_input_lang"/> </menu> 

Мероприятия:

 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_activity, menu); return true; } 

В этом сообщении говорится, что он не работает, когда присутствует кнопка меню оборудования. Но другие приложения могут показывать элементы на одном устройстве. Таким образом, этот ответ кажется неправильным. Может ли кто-нибудь помочь в этом?

Введите описание изображения здесь

Кажется, вы используете неправильное меню: ваш файл называется «menu_activity.xml», и вы раздуваете меню с помощью идентификатора R.menu.reminder_menu : R.menu.reminder_menu

Имя ресурса меню должно совпадать с именем файла, то есть: R.menu.manu_activity

Попробуй это снова – я наткнулся на это тоже один раз, и это заставило меня с ума …

Обновление После выяснения того, что вышеуказанная часть предназначена для обфускации, убедитесь, что:

  1. Вы расширяете ActionBarActivity.
  2. Вы используете (или расширяете) одну из тем Theme.AppCompat для активности (или всего приложения)
  3. Поскольку на старых устройствах атрибуты, связанные с Actionbar, отсутствуют, убедитесь, что все эти атрибуты в XML используются с пользовательским пространством имен. Здесь это будет атрибут showAsAction , чтобы библиотека совместимости могла их забрать.

У вас уже было определенное пространство имен, определенное («приложение», в теге меню). Вам нужно изменить тег android:showAsAction для app:showAsAction соответствии с руководством для Android.

Ваш исправленный файл menu_activity.xml будет выглядеть следующим образом:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_lang" app:showAsAction="always" android:title="@string/menu_lang" android:icon="@android:drawable/ic_input_lang"/> </menu> 

Расширенное руководство для Android для панели действий охватывает эти новые и неприятные ловушки …

Хорошо, я думаю, что нашел решение для вас. Он называется меню переполнения, и вам нужно вызвать метод ниже в методе 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(); } } 

Попробуйте это и сообщите мне, если это сработает для вас.

РЕДАКТИРОВАТЬ:

Думаю, я наконец понял вашу проблему. Я могу дать вам одну идею. Если вы не хотите использовать меню переполнения и просто отображать пункты меню, отображаемые на экране, который вы опубликовали, вы можете создать макет поверх своей деятельности.

Вы можете взять линейный макет, создать фон, который будет выглядеть так же, как панель действий, и разместить любые значки, которые вы хотите разместить там, и предоставить им функциональность с помощью onClickListener. Надеюсь, это даст вам некоторую идею. Таким образом вы можете создать свое собственное меню. Попробуйте макет ниже и замените ic_launcher на рисование с помощью значков меню. Затем просто установите для них onClickListeners и выполните любые функции, которые вы хотите выполнить внутри метода onClick.

 <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="#66000000" > <ImageView android:id="@+id/xMenuBtn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:background="@drawable/ic_launcher" /> <TextView android:id="@+id/xMenuTxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Chats" android:textSize="18sp" android:layout_toRightOf="@+id/xMenuBtn1" android:layout_centerVertical="true" /> <ImageView android:id="@+id/xMenuBtn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/xMenuBtn3" android:background="@drawable/ic_launcher" /> <ImageView android:id="@+id/xMenuBtn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:background="@drawable/ic_launcher" /> </RelativeLayout> 

Попробуйте в своей деятельности onCreate ():

 ActionBar bar = getSupportActionBar(); bar.setTitle(R.string.app_name); 

а потом :

  @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.clear(); getSupportMenuInflater().inflate(R.menu.menu_activity, menu); return super.onPrepareOptionsMenu(menu); } 
Intereting Posts
Использование клиентской библиотеки из Cloud Endpoints. Импорт контейнеров не работает Есть ли документальный способ, в Android 2.x, для проверки нескольких SD-карт для контента? Масштабирование Bitmapfont в LibGDX Могу ли я использовать совместимую панель действий И фрагмент в том же самом действии? Поиск полосы, изменение цвета пути с желтого на белый Java.lang.InstantiationException: невозможно создать экземпляр класса: нет пустого конструктора Appium против Espresso для автоматизированной системы тестирования Не удалось переключиться на вариант отладки сборки в Android Studio В Android можно отправить sms-сообщение нескольким получателям в код? Android getActionBar (). SetTitle не работает Цвет фона в ImageButton Зона, чувствительная к клику, не изменяется после анимации и интерактивного просмотра в андроиде Как реализовать TimeChart в achartengine с помощью android Html в текстовом режиме с разными шрифтами для жирного и курсивного Как я могу сделать элементы на ActionBar одинаковыми слева, один в центре и один справа?