Отображение пунктов меню на панели действий Android ICS - PullRequest
4 голосов
/ 27 января 2012

У меня есть приложение, написанное для Android 2.1, которое использует кнопку меню, чтобы раскрыть некоторые параметры.Я бы хотел, чтобы это меню было доступно через кнопку переполнения панели действий в ICS, но у меня возникли проблемы с его отображением.

Если я изменю свой целевой API на 15, кнопка старого менюв нижней панели исчезает в ICS, но значок в правом верхнем углу панели действий не заменяет его, поэтому нет доступа к меню.Я попытался добавить атрибут showAsAction к пунктам меню, но ничего не сделал.Я определенно нацелился на 4.0.3 в моих вариантах сборки Eclipse.

Все, что я хочу, - чтобы это меню было доступно где-то при использовании темы ICS Holo, но при этом было обратно совместимо со старыми устройствами.Как мне это сделать?

Ответы [ 2 ]

6 голосов
/ 27 января 2012

Обычно вы добавляете эти элементы действия просто путем реализации onCreateOptionsMenu(Menu menu) и добавления android:showAsAction="ifRoom" для нужных элементов в XML-файле меню.

, например

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_save"
          android:icon="@drawable/ic_menu_save"
          android:title="@string/menu_save"
          android:showAsAction="ifRoom|withText" />
</menu>

Вы учли этот факт?

Edit: Вот простая реализация, которая работала для меня некоторое время назад:

@Override
public boolean onCreateOptionsMenu(Menu menu){
    super.onCreateOptionsMenu(menu);
    createMenu(menu);
    return true;
}

private void createMenu(Menu menu){
    MenuItem mnu1 = menu.add(0, 0, 0, "Logout");
    {
        mnu1.setAlphabeticShortcut('a');
        mnu1.setIcon(R.drawable.icon);
        mnu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    }
}
0 голосов
/ 15 июля 2013

У меня была эта проблема 5 минут назад. Не знаю, может ли это быть полезным, но вот как я это решил:

Добавить super.setBooleanProperty ("showTitle", true); на ваш метод onCreate

@Override
public void onCreate(Bundle savedInstanceState) {
super.setBooleanProperty("showTitle", true);
super.onCreate(savedInstanceState);
//more code...

Это заставит панель действий показывать, и замена кнопки меню будет там. Я нацеливаюсь на Android 4 в затмении. На старых устройствах строка отображается только в качестве заголовка и, конечно, слушает действие кнопки меню по умолчанию.

...