我有一个带有 NoActionBar 主题的应用。在我的主要 Activity 中,我有一个选项菜单,该菜单是我在屏幕顶部手动创建的(或者通过使用内置设备的选项按钮创建)。
在此主要 Activity 中,我有一个 fragment 和 listView ,在其中我应用了操作模式长按功能,以显示上下文操作栏(CAB),以供其他用户选择。
现在,我尝试在我的CAB中添加一个选项项目,以便它包含一些选项,例如在listView中选择所有项目,但是由于它是CAB的一项,因此我无法像在常规 Activity 中那样真正显示弹出菜单。此外,我希望所有选项菜单回调(例如onOptionsItemSelected)都保留在CAB的上下文中,以便能够继续在CAB上执行操作。
这是我的CAB的代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_delete"
android:orderInCategory="100"
app:showAsAction="always"
android:icon="@drawable/ic_action_delete"
android:title="Delete"/>
<item
android:id="@+id/action_overflow"
app:showAsAction="always"
android:orderInCategory="200"
android:icon="@drawable/ic_action_overflow"
android:title="Options"
android:visible="false"/>
</menu>
最佳答案
显然,我错过了CAB的内置功能-内置的溢出菜单,一旦屏幕太小无法显示所有 Action ,它们就会折叠一些 Action 项。
为了始终将某些 Action 折叠在该溢出菜单下,需要执行的另一种操作是为每个 Action 设置一个:
android:showAsAction="never"
app:showAsAction="never"
因此,假设我们在CAB中有3个操作(删除,selece_all,添加),并且我们希望其中两个(select_all,添加)始终折叠在内置的溢出菜单下,我们将在CAB的xml中进行设置:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mm="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_delete"
android:orderInCategory="100"
mm:showAsAction="always"
android:icon="@drawable/ic_action_delete"
android:title="Delete"/>
<item
android:id="@+id/action_select"
android:orderInCategory="200"
android:showAsAction="never"
mm:showAsAction="never"
android:title="@string/select_all"/>
<item
android:id="@+id/action_add"
android:orderInCategory="300"
android:showAsAction="never"
mm:showAsAction="never"
android:title="@string/button_add"/>