Значок меню Android не отображается

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

android:showAsAction="always"

но даже это не работает. В более раннем проекте я просто использовал

android:showAsAction="ifRoom|withText"

и это сработало. Единственное отличие этого проекта в том, что я строю с помощью gradle вместо ANT. Может ли это иметь значение?

Вот мое меню xml:

<?xml version="1.0" encoding="utf-8"?>

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

<item
    android:id="@+id/new_transaction"
    android:icon="@drawable/ic_menu_add"
    android:title="@string/new_transaction"
    android:titleCondensed="@string/new_transaction_condensed"
    android:showAsAction="always" />

</menu>

Я скопировал каждую версию ic_menu_add.png из библиотеки Android в каждую соответствующую папку для рисования.

А вот мой onCreateOptionsMenu в моем ActionBarActivity:

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

Что бы я ни пытался, значок не появляется. Я пытался изменить максимальный и минимальный уровень API, но безрезультатно. Чтобы щелкнуть пункт меню, мне нужно перейти в дополнительное меню, а затем щелкнуть там пункт раскрывающегося меню, что определенно не идеально. Как сделать, чтобы значок отображался?

Мой минимальный уровень API — 11, а максимальный — 20. Я разрабатываю HTC One под управлением Android 4.1.2, если это имеет значение. Заранее спасибо.


person NMandapaty    schedule 20.08.2014    source источник
comment
Тот же вопрос? stackoverflow.com/questi...   -  person aemre    schedule 11.10.2014


Ответы (1)


Попробуй это:

    @Override
  public boolean onMenuOpened(int featureId, Menu menu) {
    if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
      if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
        try {
          Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
          m.setAccessible(true);
          m.invoke(menu, true);
        } catch (NoSuchMethodException e) {
          Log.e("", "onMenuOpened", e);
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
      }
    }
    return super.onMenuOpened(featureId, menu);
  }
person D4rjeeling    schedule 09.11.2014