tim*_*yjc 7 android actionbarsherlock
我升级到版本4.2,发现我的旧代码没有编译,因为它似乎已删除ForceOverflow父主题.
谷歌搜索此问题后,似乎故意删除它以维护设备一致的菜单按钮.
我确实理解使用物理菜单按钮的论点,但我只是不同意它......再加上那些旧的菜单太难看了.
我真的不希望用户说他们无法访问以前的功能(这毕竟是菜单按钮被移动到屏幕上可见的原因),那么我的选择是什么?这将在未来的版本中更改吗?我是否必须坚持使用以前版本的ABS并处理旧版ABS库中的其他一些错误,这些错误在最近的版本中得到修复?有什么工作吗?
我们可以使用SubMenu伪造它,而不是试图获得"真正的"溢出菜单.
它看起来和原来的溢出按钮一样,只是更好,因为它总是在那里.
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);
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以像以前一样设置子菜单.使用groudID,itemID等
请注意,我已选择*ic_menu_moreoverflow_normal_holo_dark*作为菜单图标.这样按钮看起来也像溢出.
现在我们只需要在用户按下硬件菜单按钮时打开该子菜单.如果你像以前一样设置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);
}
Run Code Online (Sandbox Code Playgroud)
请注意您导入:
import com.actionbarsherlock.view.SubMenu;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
Run Code Online (Sandbox Code Playgroud)
而不是:
import android.view.MenuItem;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1467 次 |
| 最近记录: |