【问题标题】:Prevent Context Menu from closing on clicking item (specifically checkbox item)防止上下文菜单在单击项目(特别是复选框项目)时关闭
【发布时间】:2010-02-25 07:42:51
【问题描述】:

如果我在上下文菜单或普通菜单中有可检查的项目,如何防止菜单在选择项目时关闭?

【问题讨论】:

    标签: android menu menuitem android-context


    【解决方案1】:

    这取决于您使用哪个库来创建菜单(ABS/ABC/?),但通常我认为您在处理项目点击时只需要return false。 return 值让系统知道点击是否被处理。通常您将其设置为true,然后系统将执行其关闭菜单的默认行为。这是上下文菜单的示例:

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
            case R.id.edit:
                editNote(info.id);
                return true; // return false here
            case R.id.delete:
                deleteNote(info.id);
                return true; // or here
            default:
                return super.onContextItemSelected(item);
        }
    }
    

    【讨论】:

    • 自从我提出问题时使用的 Android 2.x SDK 以来,情况可能已经发生了变化。
    • 不起作用。返回 false 甚至返回 true 仍会导致上下文菜单在选择项目时具有其默认的关闭行为。
    【解决方案2】:

    在我的情况下,添加这两行是有效的:

    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
    item.setActionView(new View(getApplicationContext()));
    

    【讨论】:

    【解决方案3】:

    使用以下属性:

    <MenuItem IsCheckable="True" StaysOpenOnClick="True"...
    

    【讨论】:

    • 目前这不是您可以为 Android 设置的属性
    猜你喜欢
    • 2018-02-16
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2016-03-09
    相关资源
    最近更新 更多