2013-11-24 4 views
0

У меня есть пункт меню в Рез/меню/mymenu.xml:Дисплей пункт меню как в панели действий и меню ключа

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

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

</menu> 

Но когда я нажимаю клавишу меню меню не появляется. Он отображается только в панели действий. Также я попробовал android:showAsAction="never", но в этот раз элемент отображается только на экране меню. Я хочу отобразить элемент как в панели действий, так и на экране, который отображается, когда я нажимаю клавишу меню. Спасибо заранее.

ответ

5

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

С помощью android:showAsAction="never" вы поручаете Android убрать элемент меню в меню переполнения. (На устройствах без кнопки меню аппаратного обеспечения пункт меню будет отображаться в переполнении панели действий. На устройствах с кнопкой меню аппаратного обеспечения пункт меню будет отображаться во всплывающем меню в нижней части экрана, что также известно как переполнение панели действия.)

С android:showAsAction="always" вы делаете обратное; он всегда будет отображаться в панели действий, достаточно ли места.

Хотя я полностью отговариваю вас от такого подхода, строго отвечающий на ваш вопрос состоит в том, чтобы предоставить два пункта меню: один с режимом never, другой с режимом always.

Я бы предложил вам пересмотреть, хотите ли вы элемент в меню переполнения или нет. Рассмотрим внимательно Google's recommendations on the action bar и либо отобразите его, либо поместите в переполнение - не оба. Также имейте в виду, что различные конфигурации устройств могут позволить отображать большее количество элементов, если есть достаточно места при использовании ifRoom.

0

Просто продублируйте пункт меню в your_menu.xml с тем же названием, но с другим идентификатором. Затем в onOptionsItemSelected() используйте ту же функцию кода, что и для R.id.action_settingsShown, для нового R.id.action_settingsHidden.

<item android:id="@+id/action_settingsShown" 
    android:title="@string/settings" 
    android:icon="@drawable/ic_action_settings_dark" 
    android:showAsAction="ifRoom"/> 

<item android:id="@+id/action_settingsHidden" 
    android:title="@string/settings" 
    android:icon="@drawable/ic_action_settings_dark" 
    android:showAsAction="never"/> 
Смежные вопросы