2015-09-03 2 views
0

В приведенном ниже menu.xml, я пытаюсь отобразить menu_exit в значке меню переполнения, так, как показано ниже, я установил его showAsAction="never", но когда я запустил приложение, меню переполнения не объявиться.Значок меню переполнения не отображается

Мои вопросы:

  1. Как поместить последний элемент в menu.xml menu_exit в меню переполнения?
  2. 3-й элемент в menu.xml, когда он отключен, отображается в settings menu (нижняя левая кнопка на устройстве), и я хочу, когда он отключен, он не должен появляться там, где только на ActionBar, когда он включен.

menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<item 
    android:id="@+id/menu_refresh" 
    android:orderInCategory="1" 
    android:showAsAction="ifRoom"/> 
<item 
    android:id="@+id/menu_scan" 
    android:checkable="true" 
    android:orderInCategory="2" 
    android:title="@string/menu_scan" 
    android:showAsAction="ifRoom|withText"/> 
<item 
    android:id="@+id/menu_stop" 
    android:title="@string/menu_stop" 
    android:orderInCategory="3" 
    android:showAsAction="ifRoom|withText"/> 
<item 
    android:id="@+id/menu_exit" 
    android:title="@string/menu_stop" 
    android:orderInCategory="4" 
    android:showAsAction="never"/> 
</menu> 
+0

быть ясно, когда кнопка переполнения не появляется - элемент выхода нет доступный вообще? У вашего устройства есть кнопка меню оборудования? –

+0

@IvanBartsov, если u означает нижнюю левую кнопку на устройстве, тогда да, у моего устройства есть это – user2121

+0

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

ответ

2

Перед Android 4.4, если устройство имеет кнопку меню аппаратного обеспечения, меню переполнения функции активируется с помощью аппаратной кнопки, а значок переполнения (ака три точки) не отображается.

Android 4.4 и выше устройства будет показывать действие значка переполнения, даже если кнопка меню аппаратных средств присутствуют (а также, Google пытался убедить производитель канавы кнопки меню аппаратных средств, как вы видите, производители довольно упрямые)

Для заставить предварительные 4.4 устройства, чтобы показать кнопку перелива действия, даже если они имеют аппаратную кнопку, поместить это в вашей деятельности-х onCreate()

try { 
    ViewConfiguration config = ViewConfiguration.get(this); 
    Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 
    if (menuKeyField != null) { 
     menuKeyField.setAccessible(true); 
     menuKeyField.setBoolean(config, false); 
    } 
} catch (Exception ex) { 
    // Ignore 
} 
+0

Я пробовал и отказываюсь от моей версии Android 4.4.2, код работал, но когда я нажимаю аппаратное меню , ответ будет таким, как если бы я нажал значок переполнения. Другими словами, если бы я нажал значок переполнения или кнопку меню аппаратного обеспечения, из кнопки меню переполнения появятся приемники mneu. – user2121

+0

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

+0

Могу ли я отключить кнопку меню? – user2121

0

Вот мой файл XML для меню ..

<item 
    android:id="@+id/action_send_feedback" 
    android:orderInCategory="100" 
    android:showAsAction="always" 
    android:title="@string/action_send_feedback"/> 

<item 
    android:id="@+id/action_share_app" 
    android:orderInCategory="100" 
    android:showAsAction="ifRoom" 
    android:title="@string/action_share_app" 
    android:icon="@drawable/ic_action_share" /> 

<item 
    android:id="@+id/action_rate_app" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/action_rate_app"/> 

Java код:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

для андроид телефонов, которые имеют кнопка выбора (внизу телефона)) Пункт меню, которые являются showAsAction = «никогда» происходит, когда кнопка нажата .. или иначе они будут отображаться нормально в меню выбора действий бара ..

0

если вы используете библиотеку AppCompat вам нужно изменить

android:showAsAction="never" 

к app:showAsAction="never"

пример

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/action_view_contact" 
    app:showAsAction="always|withText" 
    android:icon="@drawable/ic_action_person" 
    android:title="@string/action_view_contact" /> 
<item 
    android:id="@+id/action_save_contact" 
    app:showAsAction="always|withText" 
    android:icon="@drawable/ic_action_add_person" 
    android:title="@string/action_save_contact" /> 

<item 
    android:id="@+id/action_change_notification" 
    app:showAsAction="never|withText" 
    android:title="@string/action_turn_off_notifications" /> 

Смежные вопросы