我有一个我针对Android 2.1编写的应用程序,它使用菜单按钮来显示一些选项。我希望通过ICS中的操作栏溢出按钮提供此菜单,但我无法将其显示出来。
如果我将目标API更改为15,则底部栏中的旧菜单按钮会在ICS中消失,但操作栏右上角的图标不会替换它,因此无法访问菜单。我已经尝试将showAsAction属性添加到菜单项,它什么也没做。我肯定在我的Eclipse构建选项中定位4.0.3。
我想要的只是在使用ICS Holo主题的同时可以访问该菜单,但仍然向后兼容旧设备。我该怎么做?
答案 0 :(得分:6)
通常只需通过实施onCreateOptionsMenu(Menu menu)
并在菜单的XML文件中为所需项添加android:showAsAction="ifRoom"
来添加这些操作项。
e.g。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_menu_save"
android:title="@string/menu_save"
android:showAsAction="ifRoom|withText" />
</menu>
你有没有考虑过这个事实?
编辑: 这是一个简单的实现,不久之前对我有用:
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
createMenu(menu);
return true;
}
private void createMenu(Menu menu){
MenuItem mnu1 = menu.add(0, 0, 0, "Logout");
{
mnu1.setAlphabeticShortcut('a');
mnu1.setIcon(R.drawable.icon);
mnu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
答案 1 :(得分:0)
我5分钟前遇到过这个问题。不知道这是否仍然有用,但这就是我解决的方法:
添加super.setBooleanProperty(“showTitle”,true);你的onCreate方法
@Override
public void onCreate(Bundle savedInstanceState) {
super.setBooleanProperty("showTitle", true);
super.onCreate(savedInstanceState);
//more code...
这将强制显示操作栏并更换菜单按钮。 我在eclipse中瞄准android 4。较旧的设备仅将标题显示为标题,当然正在监听默认的菜单按钮操作。