如何为菜单组添加标题

时间:2013-04-06 14:09:28

标签: android

我想通过给它们一个标题或分隔符来区分这些组,但我找不到组元素的标题选项。

有没有办法添加标题或分隔符?

<group android:id="@+id/menu_group_sort" >
        <item
            android:id="@+id/menu_sort_relevance"
            android:showAsAction="never"
            android:title="@string/sort_relevance"/>
        <item
            android:id="@+id/menu_sort_rating"
            android:showAsAction="never"
            android:title="@string/sort_rating"/>

    </group>

7 个答案:

答案 0 :(得分:27)

我将此代码用于我的项目,看看:

<item
    android:title="Search Option"
    android:id="@+id/menu_search_option"
    android:showAsAction="ifRoom|withText">
    <menu>
        <group>
            <item
                android:id="@+id/menuSearchFilmEpisode"
                android:title="Episode"/>
            <item
                android:id="@+id/menuSearchActor"
                android:title="Actor"/>
            <item
                android:id="@+id/menuSearchDirector"
                android:title="Director"/>
        </group>
    </menu>
</item>

结果是我的操作栏上有一个文本作为图标的组。希望它有所帮助。

答案 1 :(得分:15)

也许两年太晚了,但认为对于遇到这个问题的人来说这可能是有用的......

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
    android:id="@+id/group_one">
    <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/group_two">
    <item
        android:id="@+id/group_two_item_one"
        android:title="Item one"/>
</group>

答案 2 :(得分:3)

虽然这可能不是最好的方法,但我相信它可能会帮到你。 你怎么样添加额外的禁用itens作为&#34;标题&#34;在组内,你也可以为那些itens创建一个样式,这样它们就可以显示你想要的颜色。

 <?xml version="1.0" encoding="utf-8"?>
    <menu
        xmlns:android="http://schemas.android.com/apk/res/android">
        <group>
            <item
                android:title="menu1"
                android:enabled="false"
                android:checkable="false">
            </item>
            <item
                android:title="opt1">
            </item>
            <item
                android:title="opt2">
            </item>
            <item
                android:title="opt3">
            </item>
        </group>
        <group>
            <item
                android:title="menu2"
                android:enabled="false"
                android:checkable="false">
            </item>

            <item
                android:title="opt4">
            </item>
            <item
                android:title="opt5">
            </item>
        </group>
    </menu>

您也可以尝试使用java。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        menu.addSubMenu(Menu.NONE, 1, 1, "SubMenu");
        menu.add(1, 2, 2, "Item");
        menu.add(1, 3, 3, "Item");

        menu.addSubMenu(Menu.NONE, Menu.NONE, 4, "SubMenu");
        menu.add(4, 5, 5, "Item");
        menu.add(4, 6, 6, "Item");
        menu.add(4, 7, 7, "Item");

        return true;
    }

参数

  • 的groupId 此项应属于的组标识符。这也可用于定义批次状态更改的项目组。如果某个项目不在一个组中,通常使用NONE。
  • 的itemId 唯一商品ID。如果您不需要唯一ID,请使用NONE。
  • 顺序 物品的订单。如果您不关心订单,请使用NONE。见getOrder()。
  • 标题 要为项目显示的文本。

然而,我相信两者都应该有相同的结果。

我希望它可以帮到你。

答案 3 :(得分:1)

众所周知,项目节点可以有标题,项目节点可以是菜单节点的子节点,菜单节点可以是项目的子节点 - 节点和组节点可以是菜单节点的子节点。

所以我们需要做的就是将组保持在rootMenu-itemWithTitle-menu的层次结构中。

像这样,用作NavigationView菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  tools:context=".activity.MainActivity">`

    <item android:title="@string/drawer_group_book">
        <menu>
            <group android:id="@+id/nav_group_book"
                android:checkableBehavior="single">
                <item
                    android:id="@+id/nav_book_in_stock"
                    android:icon="@drawable/vector_in_stock"
                    android:title="@string/drawer_menu_in_stock"/>
                <item
                    android:id="@+id/nav_book_wish_list"
                    android:icon="@drawable/vector_wish"
                    android:title="@string/drawer_menu_wish_list"/>
                <item
                    android:id="@+id/nav_book_lent_out"
                    android:icon="@drawable/vector_out"
                    android:title="@string/drawer_menu_lent_out"/>
                <item
                    android:id="@+id/nav_book_borrowed"
                    android:icon="@drawable/vector_in"
                    android:title="@string/drawer_menu_borrowed"/>
            </group>
        </menu>
    </item>

    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_share"
                android:icon="@drawable/ic_menu_share"
                android:title="Share"/>
            <item
                android:id="@+id/nav_send"
                android:icon="@drawable/ic_menu_send"
                android:title="Send"/>
        </menu>
    </item>

</menu>

答案 4 :(得分:1)

只需为每个组分配一个唯一ID即可。它会自动创建一个分隔符。

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
    android:id="@+id/group_items"
    android:checkableBehavior="single">
    <item
        android:id="@+id/nav_profile"
        android:icon="@drawable/ic_profile"
        android:title="@string/title_profile" />

    <item
        android:id="@+id/nav_notifications"
        android:icon="@drawable/ic_notifcation"
        android:title="@string/title_notifications" />

</group>

<group
    android:id="@+id/group_settings"
    android:checkableBehavior="single">
    <item
        android:id="@+id/nav_privacy_policy"
        android:title="@string/privacy_policy" />
    <item
        android:id="@+id/nav_about_us"
        android:title="@string/nav_about_us" />
</group>

答案 5 :(得分:0)

这可能会有点晚,但可能会有所帮助,下面的菜单代码将标题添加到菜单组,并在菜单组下方添加2个可检查的选项。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">    
<group
    android:id="@+id/gp_hour_view"
    android:checkableBehavior="single">
    <item
        android:checkable="false"
        android:title="Display">
        <menu>
            <group
                android:id="@+id/gp_hour_sel"
                android:checkableBehavior="single">
                <item
                    android:id="@+id/action_pinched_view"
                    android:checked="true"
                    android:orderInCategory="201"
                    android:title="Pinched"
                    app:showAsAction="never" />
                <item
                    android:id="@+id/action_zoomed_view"
                    android:orderInCategory="201"
                    android:title="Zoomed"
                    app:showAsAction="never" />
            </group>
        </menu>
    </item>
  </group>
</menu>

答案 6 :(得分:0)

这是我的想法:

<menu> 
    <group> 
        <item android:title="grouptitle"/> 
        <item android:title="item1" android:id="@id+/item1"/>
    </group>
</menu>