14

有没有办法在 HoneyComb+ 的 ActionBar 中的菜单项之间显示分隔符。

一些帖子说只有当菜单项具有 android:showAsAction="withText" 时才会显示分隔符。

我只想显示图标而不是文本。

我通过实现 Action Bar Compatibility 成功展示了 Pre-HoneyComb 的 Divider。

我不想使用这篇文章中给出的 ActionBarSherlock Android actionbar sherlok 不显示分隔符,因为是时候在我的所有项目中从 Action Bar Compatibility 更改为 ActionBarSherlock 了。

当我看到 Android Source 时,我发现 Divider 只有在它有如下所示的文本时才会显示(来自 ActionMenuItemView)

public boolean needsDividerBefore() {
    return hasText() && mItemData.getIcon() == null;
}

public boolean needsDividerAfter() {
    return hasText();
}

有没有一种方法可以为 ActionBar 提供 ActionMenuItemView 的实现,其中 needsDividerBefore() 将始终为真

4

3 回答 3

13

我在http://android-developers.blogspot.in/2011/04/customizing-action-bar.html的帮助下自己找到了答案但是,这并不能完全解决我的问题。它为标题添加了一个分隔符,也为主页图标添加了一个分隔符。还有左右分隔符。这也是可调的。

我将 android:selectableItemBackground 添​​加到我的主题中。

<item name="android:selectableItemBackground">@drawable/action_bar_item_selector</item>

action_bar_item_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:drawable="@drawable/actionbar_compat_separator"></item>

    <item android:left="1dp" android:drawable="@drawable/actionbar_compat_item"></item>

</layer-list>

actionbar_compat_separator - 我的分隔符是否可绘制

actionbar_compat_item 是我的操作栏项目选择器。

已编辑

我找到了一个更好的解决我的问题的方法。它运作良好。

<item name="android:actionButtonStyle">@style/ActionButton</item> to my Theme

<style name="ActionButton" parent="android:style/Widget.Holo.Light.ActionButton">
        <item name="android:background">@drawable/action_bar_item_selector</item>
    </style>
于 2012-07-12T05:29:38.453 回答
7

您可以使用自定义样式覆盖现有主题,例如

<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>
于 2012-09-03T11:44:41.723 回答
0

更新:这似乎不适用于 Android 5 Lollipop 及更高版本:


这是我找到的最好的方法。只需在菜单中添加一个包含虚拟项目的组:

菜单.xml

<group>
    <!--dummy item to get a nice separator-->
    <item
        android:title=""
        android:showAsAction="always"
        android:enabled="false" />
</group>

<item android:id="@+id/action_example"
    ...

虚拟项目的标题为空,因此它看起来不可见,并且它已禁用,因此无法单击。

于 2014-04-30T03:54:30.667 回答