android菜单图标没有显示

时间:2014-08-20 21:36:45

标签: android android-menu

我无法在操作栏上显示菜单图标。我试过设置

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库复制到每个相应的drawable文件夹。

这是我的ActionBarActivity中的onCreateOptionsMenu:

@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.我正在开发运行Android 4.1.2的HTC One,如果有任何重要的话。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

    @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);
  }