ActionBar MenuItem Divider

Viv*_*wal 14 android android-actionbar

有没有办法在ActionBar for HoneyComb +的菜单项之间显示Divider.

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

我想只显示Icon而不是Text.

我通过实现Action Bar兼容性成功地展示了Divider for Pre-HoneyComb.

我不想使用ActionBarSherlock,因为在这篇文章中给出了Android操作栏sherlok没有显示divider,因为它是时候在我的所有项目中从Action Bar Compatibility更改为ActionBarSherlock.

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

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

public boolean needsDividerAfter() {
    return hasText();
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以为ActionBar提供ActionMenuItemView的实现,其中needsDividerBefore()总是给出true

Viv*_*wal 12

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

我在我的主题中添加了android:selectableItemBackground.

<item name="android:selectableItemBackground">@drawable/action_bar_item_selector</item>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

和actionbar_compat_item是我的操作栏项的选择器.

EDITED

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

<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>
Run Code Online (Sandbox Code Playgroud)


Paw*_*ari 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>
Run Code Online (Sandbox Code Playgroud)