如何为菜单项Android添加行分隔符

如何为菜单项Android添加行分隔符,android,drop-down-menu,menu,contextmenu,menuitem,Android,Drop Down Menu,Menu,Contextmenu,Menuitem,我的菜单项变大了,所以我想把它们分组,并做一个分隔线来分隔每个组。 我现在该怎么办 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!--group1--> <item android:id="@+i

我的菜单项变大了,所以我想把它们分组,并做一个分隔线来分隔每个组。 我现在该怎么办

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
<!--group1-->
            <item
                android:id="@+id/action_addtag"
                android:title="@string/add_hashtag_string"
                app:showAsAction="never" />
            <item
                android:id="@+id/action_block_list"
                android:title="Block"
                app:showAsAction="never" />
            <item
                android:id="@+id/action_report_list"
                android:title="Report"
                app:showAsAction="never" />
<!--group2-->
            <item
                android:id="@+id/terms"
                android:title="Terms"
                app:showAsAction="never" />
            <item
                android:id="@+id/feedback"
                android:title="FeedBack"
                app:showAsAction="never" />
<!--group3-->
            <item
                android:id="@+id/action_setting"
                android:title="Setting"
                app:showAsAction="never" />
    </menu>

您只需定义一个具有唯一ID的组,我已经检查了实现,如果组具有不同的ID,它将创建一个分隔符

创建分隔符的示例菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">

<group android:id="@+id/grp1">
    <item
        android:id="@+id/navigation_item_1"
        android:checked="true"
        android:icon="@drawable/ic_home"
        android:title="@string/navigation_item_1" />
</group>

<group android:id="@+id/grp2">
    <item
        android:id="@+id/navigation_item_2"
        android:icon="@drawable/ic_home"
        android:title="@string/navigation_item_2" />
</group>

希望这有帮助

更新

对于菜单项可能是,您可以使用此

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <item
        android:id="@+id/action_cart"
        android:title="cart"
        android:actionLayout="@layout/cart_update_count"
        android:icon="@drawable/shape_notification"
        app:showAsAction="always"/>
</menu>

和actionLayout文件将被删除

 <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <View
        android:id="@+id/divider"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/divider"/>

    <TextView
        android:id="@android:id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:attr/selectableItemBackground"
        android:gravity="center_vertical"          
        android:textAppearance="?attr/textAppearanceListItemSmall"/>

</LinearLayout>

确保调用
菜单compat.setGroupDividerEnabled(菜单,true)当您为菜单充气时,否则,分组将不会被分隔符分隔

例如:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_activity_main, menu);

    MenuCompat.setGroupDividerEnabled(menu, true);

    return true;
}
并确保菜单xml中有不同的组,例如:

    <menu>
        <group android:id="@+id/sorting" >
            <item
                android:id="@+id/action_sorting_new_old"
                android:title="@string/action_sorting_new_old"/>

            <item
                android:id="@+id/action_sorting_a_z"
                android:title="@string/action_sorting_a_z"/>
        </group>

        <group android:id="@+id/settings">
            <item
                android:id="@+id/action_settings"
                android:title="@string/action_settings"/>
        </group>
    </menu>

这是一个老问题,但上面的答案对我来说并不适用(我反对为单个项目添加“组”)。所做的工作是添加一个样式元素,如下所示:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar"> <!--  .Light.DarkActionBar"> -->
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">#17161B</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:dropDownListViewStyle">@style/PopupMenuListView</item>//<-add this
    </style>

@颜色/原色
#17161B
@颜色/颜色重音

@style/PopupMenuListView//我尝试了这种方法,但没有看到分隔线。似乎它不适用于菜单项,只适用于drawerNavigatorSorry先生@Vivid Vervet,我用android 4.0、5.0检查了解决方案不起作用:(我改为
app:showasaaction=“never”
app:actionLayout=“@layout/cart\u update\u count”
这在Android 7.0中适用于我-值得注意的是,如果你不为每个组设置ID,那么这些行就不会出现,这让我很困惑。Hallelujah!这是互联网上似乎所有其他答案都缺少的钥匙!1000倍谢谢。我缺少这个:MenuCompat.setGroupDividerEnabled(菜单,true)THX另外,每组必须有一个
id
    <style name="PopupMenuListView" parent="@style/Widget.AppCompat.ListView.DropDown">
        <item name="android:divider">#dddddd</item>
        <item name="android:dividerHeight">1dp</item>
    </style>