Android菜单图标不会显示在操作栏中

时间:2014-11-20 10:36:15

标签: android android-menu

这是我的菜单项代码

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/budget_create" android:orderInCategory="100"
          android:icon="@drawable/add"
           android::showAsAction="ifRoom"   
           android:title="New Monthly Budget"

         ></item>
   </menu>

这是我的java代码,

    @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
       inflater.inflate(R.menu.budget_create_menu, menu);

    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case R.id.budget_create:

        Intent i=new Intent(getActivity(),Budget_Monthly_details.class);

          startActivity(i);
          getActivity().overridePendingTransition(R.anim.abc_slide_in_top, R.anim.abc_slide_out_top);

        break;
 }

被修改

在添加了onMenuOpened()代码后,我得到了这样的图片。

我想要动作栏中的图标。

enter image description here

2 个答案:

答案 0 :(得分:2)

将此代码添加到您正在给菜单充气的Activity中..这段代码对我有用..希望它也适合您..

@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(TAG, "onMenuOpened", e);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    return super.onMenuOpened(featureId, menu);
}

注意:此方法仅适用于Activity .. Fragments不支持onMenuOpened()方法。

已编辑:

如果您希望在操作栏中显示ICON(在溢出菜单之外)..

尝试以下选项..

       yourapp:showAsAction="ifRoom" 

<强> e.g。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:yourapp="http://schemas.android.com/apk/res-auto">


    <item android:id="@+id/action_add"
        android:icon="@drawable/add"
        android:title="My Monthly Budget"
        yourapp:showAsAction="always"  />

</menu>

答案 1 :(得分:1)

更改菜单布局文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/action_add"
        android:icon="@drawable/add"
        android:title="My Monthly Budget"
        android:showAsAction="ifRoom" />

</menu>