我想在屏幕顶部显示复选框以允许用户启用screenLock,我只想在他打开optionsMenu时显示该复选框。 我可以通过覆盖这两种方法
来做到这一点@Override
public boolean onMenuOpened(int featureId, Menu menu) {
checkbox.setVisibility(View.VISIBLE);
return super.onMenuOpened(featureId, menu);
}
@Override
public void onOptionsMenuClosed(Menu menu) {
checkbox.setVisibility(View.GONE);
super.onOptionsMenuClosed(menu);
}
然而,当我触摸复选框时,为了检查它,菜单自行关闭,复选框消失,然后我才能检查它。
所以我的问题很简单:当我触摸复选框时,如何阻止选项菜单关闭?
答案 0 :(得分:3)
Android股票浏览器显示您可以在菜单打开时单击的TitleBar。因此,他们的解决方案也应该适合您的问题。
使用WindowManager显示TitleBar:
WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
// Add the title bar to the window manager so it can receive touches
// while the menu is up
WindowManager.LayoutParams params
= new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP;
manager.addView(mFakeTitleBar, params);
要删除它(当菜单关闭或用户点击它时)
manager.removeView(mFakeTitleBar);