android - 单击复选框时防止 OptionsMenu 关闭

标签 android menu

我想在屏幕顶部显示复选框以允许用户启用屏幕锁定,我只想在他打开选项菜单时显示该复选框。 我可以通过覆盖这两种方法来做到这一点

@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/

相关文章:

java - 如何将 View 移动到屏幕最近的边缘?

java - 应用内结算广告移除 : Ads are not showing

java - 在操作栏上叠加图像

jquery - 如何让我的特定菜单使事件元素具有不同的颜色

css - Superfish 菜单最后一项在 IE 中不是 100%

java eclipse 插件 : menuitems appear in windows but not on linux

html - 转换 CSS3 导航菜单

java - Proguard映射文件: meaning of n:n (0:0 and 1:1)

android - 使用方程 x^2+y^2=c^2 绘制圆的数学关系

css - Internet Explorer 下拉菜单悬停消失