我需要在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);
}
下面附带的结果屏幕。我需要有搜索图标而不是菜单溢出图标。
答案 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)
答案 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,它会自动添加溢出图标。