【问题标题】:How to hold the overflow menu after I click it?点击后如何按住溢出菜单?
【发布时间】:2018-09-05 14:01:13
【问题描述】:
我在溢出菜单中添加了一些复选框。单击溢出菜单中的复选框后,我希望溢出菜单保持不变而不是消失。我怎样才能做到这一点?感谢您的帮助。
这是我的菜单 xml 文件。
<item
android:id="@+id/action_check"
android:title="@string/action_check"
android:orderInCategory="1"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/notification"
android:orderInCategory="2"
android:title="@string/notification"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/about"
android:orderInCategory="3"
android:title="@string/about"
app:showAsAction="never"></item>
【问题讨论】:
标签:
java
android
overflow-menu
【解决方案1】:
我就是这样做的。
在实现选项菜单的活动中添加以下代码。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//your checking other stuff
item.setChecked(!item.isChecked());
//main part for holding onto the menu
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
item.setActionView(new View(this));
item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return false;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return false;
}
});
return false;
}
通过添加以下行:item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 我正在标记该项目,因为它具有可展开/可折叠的行为,因此它将调用 setOnActionExpandListener。
这里的这一行:item.setActionView(new View(this)); 是项目处于展开状态时的视图。它只是一个虚拟视图,因为我们永远不会让它展开我接下来要解释的方式。
你看到我从 setOnActionExpandListener 的两个方法中返回 false 以抑制项目的展开和折叠,因此我们在上一步中提供的视图将永远不会显示并且菜单将保持打开状态。
以下是您的菜单文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:checkableBehavior="all">
<item
android:id="@+id/action_check"
android:orderInCategory="1"
android:title="Title 1"
app:showAsAction="never" />
<item
android:id="@+id/notification"
android:orderInCategory="2"
android:title="Title 2"
app:showAsAction="never" />
<item
android:id="@+id/about"
android:orderInCategory="3"
android:title="Title 3"
app:showAsAction="never" />
</group>
</menu>
注意group android:checkableBehavior="all" 行是告诉组中的所有项目都将具有可检查的行为,因此您不必在每个项目中都写可检查。
【解决方案2】:
组是具有某些特征的菜单项的集合,更多信息see
<group android:id="@+id/group>
<item
android:id="@+id/action_check"
android:title="@string/follow"
android:orderInCategory="1"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/notification"
android:orderInCategory="2"
android:title="@string/notification"
app:showAsAction="never"
android:visible="true"
android:checkable="true"/>
<item android:id="@+id/about"
android:orderInCategory="3"
android:title="@string/about_us"
app:showAsAction="never"/>
</group>
【讨论】:
-
-
group 是具有某些特征的菜单项的集合,更多信息see
-