web-dev-qa-db-ja.com

メニュー項目の行分割線を追加する方法Android

メニュー項目が大きくなるので、グループ化し、各グループを区切るための行分割線を作成します。私は今どうすればいい ?

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

一意の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>
25
droidev

メニューを膨らませるときは、必ずMenuCompat.setGroupDividerEnabled(menu, 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>
29
HannaY

古い質問ですが、上記の回答はうまくいきませんでした(そして、単一のアイテムに「グループ」を追加することに反対しています)。機能したのは、次のようにスタイル要素を追加することでした。

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

その参照

    <style name="PopupMenuListView" parent="@style/Widget.AppCompat.ListView.DropDown">
        <item name="Android:divider">#dddddd</item>
        <item name="Android:dividerHeight">1dp</item>
    </style>

同じres/values/styles.xmlファイル内。それが役に立てば幸い!

0
kwishnu