带有“ActionBarActivity”的android.support.v7没有菜单显示
在新的更新中,Google发布了一个新的API支持库,支持API级别7+的ActionBar。
我使用了ActionBarSherlock直到这个更新,我写了代码来加载菜单:
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.activity_main, menu); return true; }
和菜单文件:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/item_menu_ok" android:icon="@drawable/ic_action_ok" android:title="@string/ok" android:showAsAction="always"></item> <item android:id="@+id/item_menu_cancel" android:icon="@drawable/ic_action_cancel" android:title="@string/cancel" android:showAsAction="always"></item> </menu>
在操作栏上设置菜单button。 此代码与ActionBarSherlock完美协同工作。 但是,当我将操作栏更改为新的支持库时,button不会显示在操作栏中。 即使它们被设置为android:showAsAction="always"
。 而当我debugging的代码,functionmenu.getSize()
返回2,这是正确的,但没有button显示..
为什么新的支持库中没有显示button?
尝试按设备或模拟器上的MENUbutton,看看它们是否出现在溢出中。
如果他们这样做,那么问题是你的<menu>
XML需要改变。 与ActionBarSherlock和本地API级别11+操作栏一起使用的菜单XML将不适用于AppCompat操作栏backport。
你的菜单XML需要如下所示:
<?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/item_menu_ok" android:icon="@drawable/ic_action_ok" android:title="@string/ok" yourapp:showAsAction="always"></item> <item android:id="@+id/item_menu_cancel" android:icon="@drawable/ic_action_cancel" android:title="@string/cancel" yourapp:showAsAction="always"></item> </menu>
而且你需要使用相同的yourapp
前缀来处理与action栏相关的任何事情(例如, yourapp:actionLayout
)。
您可以在操作栏文档中看到这一点。
我想补充一点答案。
如果你想看到文本和图标 ,请在showAsAction
使用withText
,我刚刚testing过; 当我always
使用或ifRoom
没有与withText
,我只看到一个图标。