选项菜单中选项之间有分隔线。就像在菜单中显示的选项之间有一个分隔符。

6
在我的应用程序中,我有一个选项菜单,默认情况下位于顶部。当我们按下菜单时,在该菜单中没有选项之间的分隔线。我想显示它们之间的分隔线,就像是分隔符。
我尝试更改主题,它可以工作,但我不希望这样做,因为如果我更改主题,它将完全影响我的应用程序。
在AppTheme中可以工作,但在AppTheme.AppCompat中无法工作。
我希望它能够在不更改主题的情况下工作。
如果有人需要代码,我会发布它。
 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:showDividers">beginning</item>
    <item name="android:divider">@color/action_bar_divider</item>
</style>

我在这里发布了一些解决方案,请尝试。 - Vishal Thakkar
我已经更新了我的答案,请查看。 - Vishal Thakkar
我接受这个答案,谢谢。请问能否减小菜单栏的宽度? - Bhargavi Yamanuri
你尝试过使用dividermargin吗? - Vishal Thakkar
我尝试了所有的方法,但如果我们设置布局边距,它会影响整个布局。 - Bhargavi Yamanuri
显示剩余2条评论
1个回答

4

有很多方法可以实现这个目标。

解决方案1 ==> 您可以在菜单XML中创建类似以下的组:

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

解决方案2 ==> 您可以创建自定义操作布局,如下所示。
<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/custom_layout"
    android:icon="@drawable/shape_notification"
    app:showAsAction="always"/>

并且 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"/>

解决方案三 ==> 为特定的活动创建自定义主题


该解决方案建议为特定活动创建一个自定义主题。
<style name="CustomTheme" parent="android:Theme.Holo.Light">
<item name="android:actionBarStyle">@style/ActionBar</item></style>


 <style name="ActionBar"parent="android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@color/action_bar_background</item>
<item name="android:showDividers">beginning</item>
<item name="android:divider">@color/action_bar_divider</item></style>

解决方案4 ==> 您可以为DropdownlistView自定义视图。
<style name="PopupMenuListView" parent="@style/Widget.AppCompat.ListView.DropDown">
<item name="android:divider">#000000</item>
<item name="android:dividerHeight">1dp</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">   


 <item name="android:dropDownListViewStyle">@style/PopupMenuListView</item></style>

您可以参考此链接在菜单项中添加分隔符

1
我尝试了你建议的所有解决方案,但仍然没有任何作用,我仍然遇到问题。 - Bhargavi Yamanuri
我已经尝试了前两种解决方案,但如果我们更改主题,它会影响我的项目,我想保持AppCompatTheme。 - Bhargavi Yamanuri
@BhargaviYamanuri 只需在您的应用程序主题中添加以下内容:<item name="android:showDividers">beginning</item><item name="android:divider">@color/action_bar_divider</item> - Vishal Thakkar
这个也不起作用。以下是我的主题检查,有问题吗? - Bhargavi Yamanuri
我尝试创建具有不同ID的组,但仍然无法成功。是否有其他解决方案?过去两天我一直在尝试解决它,但是没有成功。我已经尝试了Google和StackOverflow中的每个建议。 - Bhargavi Yamanuri
那个链接可以用。改变了你的答案后,我会接受它。@Jiangbo Wang的回答完美地工作,没有影响任何主题。非常感谢你的帮助。 - Bhargavi Yamanuri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接