未findActionBarSherlock ForceOverflow资源

我升级到版本4.2,发现我的旧代码没有编译,因为它出现的ForceOverflow父主题已被删除。

谷歌search这个问题后,它似乎被故意删除,以维持设备一致的菜单button。

我理解使用物理菜单button的理由,但我只是不同意它…再加上它是如此可恶丑旧菜单。

我真的不希望用户说他们不能访问以前的function(这毕竟是菜单button被移动到屏幕上可见的原因),所以我的select是什么? 这将在未来的版本中改变吗? 我是否必须坚持使用以前的ABS版本,并处理在最近版本中修复的旧ABS库中的其他一些错误? 有什么解决办法吗?

Solutions Collecting From Web of "未findActionBarSherlock ForceOverflow资源"

我们可以用SubMenu来伪造它,而不是试图获得一个“真正的”溢出菜单。

它看起来像和原来的溢出button,更好,因为它会永远在那里。

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); } 

当然,你可以像以前一样设置子菜单。 使用groudID,itemID等

请注意,我已经select* ic_menu_moreoverflow_normal_holo_dark *作为菜单图标。 这样的button也将看起来像一个溢出。

现在我们只需要在用户按下硬件菜单button时打开这个子菜单。 如果您像我以前那样设置mainMenu和subMenu1,我们可以很容易地做到这一点。

 @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); } 

谨防你input:

 import com.actionbarsherlock.view.SubMenu; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; 

不是

 import android.view.MenuItem;