我升级到了4.2版本,发现我的旧代码无法编译,因为似乎已经删除了ForceOverflow父主题。
在搜索该问题后,看起来是有意删除了它,以保持设备一致的菜单按钮。
我确实理解使用物理菜单按钮的论点,但我不同意...而且那些旧菜单太丑陋了。
我真的不希望用户说他们无法访问以前的功能(毕竟这是将菜单按钮移动到屏幕上可见的原因),那么我的选择是什么?这个问题会在未来的版本中改变吗?我必须坚持使用之前的ABS版本并处理旧版ABS库中已修复的其他错误吗?有没有任何解决方法?
我升级到了4.2版本,发现我的旧代码无法编译,因为似乎已经删除了ForceOverflow父主题。
在搜索该问题后,看起来是有意删除了它,以保持设备一致的菜单按钮。
我确实理解使用物理菜单按钮的论点,但我不同意...而且那些旧菜单太丑陋了。
我真的不希望用户说他们无法访问以前的功能(毕竟这是将菜单按钮移动到屏幕上可见的原因),那么我的选择是什么?这个问题会在未来的版本中改变吗?我必须坚持使用之前的ABS版本并处理旧版ABS库中已修复的其他错误吗?有没有任何解决方法?
我们可以通过子菜单来模拟“真正”的溢出菜单,而不是试图获取它。
它看起来和行为上都像原始的溢出按钮,只不过更好,因为它总是存在。
private Menu mainMenu;
private SubMenu subMenu1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mainMenu = menu;
subMenu1 = menu.addSubMenu("");
subMenu1.add("Settings");
subMenu1.add("About");
subMenu1.add("Help");
MenuItem subMenu1Item = subMenu1.getItem();
subMenu1Item.setIcon(R.drawable.ic_menu_moreoverflow_normal_holo_dark);
subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
mainMenu.performIdentifierAction(subMenu1.getItem().getItemId(), 0);
return true;
}
return super.onKeyUp(keyCode, event);
}
请注意导入以下内容:
import com.actionbarsherlock.view.SubMenu;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
而不是:
import android.view.MenuItem;