How to add title to group on PopupMenu, not submenu

Viewed 1726

I want to add the title of the group of items of the submenu. I don't want to use the submenus which are hidden and open on its click, I want to implement a title of the group of menu items. So now my menu looks like this:

enter image description here

But I want to implement it like this:

enter image description here

Now my XML seems like this, but it's using a nested submenus:

<?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"
>
    
    <group
    android:id="@+id/group_1"
    android:checkableBehavior="single"
    >
        
        <item
            android:id="@+id/apps_sort_title"
            android:title="@string/apps_sort_title"
            app:showAsAction="ifRoom"
        />
        
        <item
            android:id="@+id/apps_sort_date"
            android:title="@string/apps_sort_date"
            app:showAsAction="ifRoom"
        />
        
        <item
            android:id="@+id/apps_sort_size"
            android:title="@string/apps_sort_size"
            app:showAsAction="ifRoom"
        />
        
    </group>
    
    <item android:title="@string/title_order">
        
        <menu>
            
            <group
            android:id="@+id/group_2"
            android:checkableBehavior="single"
            >
                
                <item
                android:id="@+id/apps_sort_asc"
                android:title="@string/sort_asc"
                app:showAsAction="ifRoom"
                />
                
                <item
                android:id="@+id/apps_sort_desc"
                android:title="@string/sort_desc"
                app:showAsAction="ifRoom"
                />
            
            </group>
        
        </menu>
    
    </item>
    
</menu>

Thanks in advance!

1 Answers

Set the tittle on group, you have to implement your menu XML like this.

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
    android:id="@+id/gp1"
    android:checkableBehavior="single"
    android:visible="true">
    <item android:title="Group Title">
    <menu>
    <item
        android:id="@+id/group_item_one"
        android:title="Item one"/>
    <item
        android:id="@+id/group_item_two"
        android:title="Item two"/>
    <item
        android:id="@+id/group_item_three"
        android:title="Item three"/>
    </menu>
    </item>
</group>
<group
    android:id="@+id/gp2"
    android:checkableBehavior="single">
    <item
        android:id="@+id/group_two_item_one"
        android:title="Item one"/>
</group>

Finally found the solution I needed to use the setGroupVisible() method of the menu object passed into the onPrepareOptionsMenu() method.

menu.setGroupVisible(R.id.gp1, false);

Happy coding!!

Related