在新的更新中,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>
设置操作栏上的菜单按钮。此代码与ActionBarSherlock完美配合。但是当我将操作栏更改为新的支持库时,操作栏中不会显示按钮。即使它们被设置为android:showAsAction="always"
。当我调试代码时,函数menu.getSize()
返回2,这是正确的,但没有显示按钮..
为什么按钮未显示在新支持库中?
答案 0 :(得分:104)
尝试按设备或仿真器上的MENU按钮,看看它们是否出现在溢出中。
如果他们这样做,那么问题是你的<menu>
XML需要改变。与ActionBarSherlock一起使用的菜单XML和本机API Level 11+操作栏不适用于AppCompat操作栏后台。
您的菜单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
前缀(例如yourapp:actionLayout
)。
您可以在the action bar documentation中看到这一点。
答案 1 :(得分:0)
我想添加一点the answer.
如果您想查看文字和图标,请使用withText
中的showAsAction
我刚试过它;当我使用always
或ifRoom
而不使用withText
时,我只看到了一个图标。