在上下文操作栏中创建弹出选项菜单

5
我有一个没有动作栏主题的应用程序。在我的主活动中,我手动创建了一个选项菜单放在屏幕顶部(或利用内置设备的选项按钮)。
在这个主活动中,我有一个带有ListView的fragment,在其中应用了长按功能以显示上下文操作栏(CAB)以供用户选择更多选项。
现在,我尝试将选项添加到我的CAB中,以包含一些选项,例如选择listView中的所有项目,但由于它是CAB的一个项目,我无法像在常规活动中那样显示弹出菜单。此外,我希望所有选项菜单回调(例如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>

你想要实现什么并不是很清楚:你是想让上下文操作栏看起来与具有操作栏主题的活动完全相同,但另一方面默认情况下不显示操作栏吗? - Tal Kanel
1个回答

2

显然,我错过了CAB的内置功能 - 当屏幕无法显示所有操作项时,内置溢出菜单会折叠其中一些操作项。

为了始终将某些操作折叠到溢出菜单下,需要对每个操作设置:

android:showAsAction="never"
app:showAsAction="never"

假设我们在CAB中有3个操作(删除、全选、添加),我们希望其中两个操作(全选、添加)始终折叠在内置溢出菜单下,我们可以在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"/>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接