如何在菜单组之间添加分隔符/分隔符?

时间:2017-04-22 11:28:37

标签: android android-menu separator divider

我想在每个菜单组之间显示一个分隔符。我已经尝试给每个组一个唯一的ID,但这不起作用。我找到了一些其他解决方案,但它们看起来有点奇怪,比如创建一个高度为1dp的LinearLayout。

以下是它的展示方式。 menu without group dividers

以下是MENU xml的代码:

<?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"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.marcelofb.cratediggersguide.MainActivity">

<item
    android:id="@+id/search"
    android:icon="@android:drawable/ic_menu_search"
    android:title="@string/search_title"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="collapseActionView|ifRoom"/>

<item
    android:id="@+id/searchOptions"
    android:title="Tools"
    android:icon="@android:drawable/ic_menu_manage"
    app:showAsAction="always">


<group
    android:id="@+id/radioGroupNovoUsado"
    android:checkableBehavior="single">

    <item
        android:id="@+id/novo"
        android:title="NOVO"
        app:showAsAction="never" >
    </item>

    <item
        android:id="@+id/usado"
        android:title="USADO"
        app:showAsAction="never" />
</group>


<group
    android:id="@+id/radioGroupCompactoLP"
    android:checkableBehavior="single">

    <item
        android:id="@+id/compacto"
        android:title="COMPACTO"
        app:showAsAction="never" />

    <item
        android:id="@+id/longplay"
        android:title="LP"
        app:showAsAction="never" />
</group>


<group
    android:id="@+id/radioGroupNacionalImportado"
    android:checkableBehavior="single">

    <item
        android:id="@+id/nacional"
        android:title="NACIONAL"
        app:showAsAction="never" />

    <item
        android:id="@+id/importado"
        android:title="IMPORTADO"
        app:showAsAction="never" />
</group>

</item>

3 个答案:

答案 0 :(得分:3)

嗯,他们在Android 22.1.0中添加了util方法。  https://developer.android.com/reference/android/support/v4/view/MenuCompat

MenuCompat.setGroupDividerEnabled(Menu menu, boolean enabled) 

科特林样式

 override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        menuInflater.inflate(R.menu.what_ever, menu)
        MenuCompat.setGroupDividerEnabled(menu, true)

        return super.onCreateOptionsMenu(menu)

    }

implementation "com.android.support:support-v4:28.0.0-rc01"

答案 1 :(得分:0)

尝试使用动作布局

<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=".LandingActivity">
<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就像这样有xml。

<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>

希望这有效

答案 2 :(得分:-2)

<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>
<item android:title="Second category">
    <menu>
        <item
            android:id="@+id/nav_share"
            android:icon="@drawable/ic_menu_1"
            android:title="menu 1" />
        <item
            android:id="@+id/nav_send"
            android:icon="@drawable/ic_menu_2"
            android:title="menu 2" />
    </menu>
</item>

这样所有的项目,即 - 通信,第二类将显示在不同的组中,按行划分