菜单图标未显示在操作栏中

时间:2014-12-19 08:56:52

标签: android android-fragments menu android-actionbar menuitem

我需要在Fragment中扩充自定义菜单。

我只有一个菜单项。但图标没有显示。

有人可以告诉我的代码有什么问题

我的menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"  >

<item
    android:id="@+id/search"
    android:icon="@android:drawable/ic_search_category_default"
    app:showAsAction="always"
    android:title="Search"/></menu>

我设置onCreateView()

    setHasOptionsMenu(true);
    getActivity().invalidateOptionsMenu();

充气菜单

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

    inflater = getActivity().getMenuInflater();

    inflater.inflate(R.menu.menu, menu);

}

下面附带的结果屏幕。我需要有搜索图标而不是菜单溢出图标。

enter image description here

9 个答案:

答案 0 :(得分:8)

我知道我参加派对有点晚了,但希望我能帮助别人。今天我遇到了同样的问题。

我使用android修复:showAsAction =&#34;总是&#34;代替app:showAsAction =&#34;总是&#34;

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

<item android:id="@+id/bluetooth_status_off"
    android:orderInCategory="0"
    android:icon="@drawable/bluetooth_red"
    android:title="@string/app_name"
    android:showAsAction="always" />
</menu>
showAsAction上的

带有红色(警告)下划线,但工作正常。

答案 1 :(得分:1)

您必须添加以下属性app:showAsAction="ifRoom"

答案 2 :(得分:1)

我认为你应该使用

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"  >

<item
android:id="@+id/search"
android:icon="@drawable/ic_search_category_default"
app:showAsAction="always"
android:title="Search"/></menu>

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.mymenu, menu);
    return true;
}

答案 3 :(得分:1)

很抱歉迟到但将此代码放入onCreate()

'Error: [Error] [$compile:ctreq] Controller 'ngModel', required by directive 'ngChange', can't be found!'

答案 4 :(得分:0)

使用以下代码制作菜单...

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
   <item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>

   <item 
    android:id="@+id/action_search"
    android:title="Search"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="always"
    android:actionViewClass="android.widget.SearchView" />
 </menu>

并将其设置为菜单..

答案 5 :(得分:0)

这是ActionBar中“溢出”菜单的默认行为。 如果要在溢出菜单中显示图标,请使用此代码snippit覆盖活动中的onMenuOpened方法:

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

答案 6 :(得分:0)

如果您在Android 3.0+上运行代码,则菜单中的图标不会按设计显示。 这是Google的设计决定。 You can read more about this on Android developers blog.

答案 7 :(得分:0)

  1. 复制菜单xml代码。
  2. 删除菜单文件
  3. 现在在res-&gt;菜单目录
  4. 中创建一个新的菜单文件
  5. 并使用其他名称命名
  6. 现在运行

答案 8 :(得分:0)

确保您添加了一个没有图标的菜单项。 例如:

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

    <item
        android:id="@+id/next_btn"
        android:checked="true"
        android:icon="@android:drawable/ic_input_add"
        android:title="Item"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_settings"
        android:title="Settings" />

</menu>

感谢action_settings,它会自动添加溢出图标。