单击复选框时阻止OptionsMenu关闭

时间:2011-01-18 15:11:27

标签: android menu

我想在屏幕顶部显示复选框以允许用户启用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);
}

然而,当我触摸复选框时,为了检查它,菜单自行关闭,复选框消失,然后我才能检查它。

所以我的问题很简单:当我触摸复选框时,如何阻止选项菜单关闭?

1 个答案:

答案 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);