我想在屏幕顶部显示复选框以允许用户启用屏幕锁定,我只想在他打开选项菜单时显示该复选框。 我可以通过覆盖这两种方法来做到这一点
@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);
}
但是,当我触摸复选框时,为了选中它,菜单会自行关闭,并且复选框会在我选中之前消失。
所以我的问题很简单:当我触摸复选框时,如何防止选项菜单关闭?
最佳答案
Android stock 浏览器显示一个标题栏,您可以在菜单打开时单击它。所以他们的解决方案也应该适合您的问题。
TitleBar 使用 WindowManager 显示:
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);
关于android - 单击复选框时防止 OptionsMenu 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4725704/