Android ActionBarSherlock不显示分割线。

12

我正在使用Sherlok-ActionBar,并尝试在操作按钮之间应用分隔线。我已经有了样式,但是分隔线不可见,为什么?

<style name="Theme.SherlockCustom" parent="@style/Theme.Sherlock.Light">
    <item name="abBackground">@drawable/actionbar_gradient</item>
    <item name="abIcon">@drawable/logo</item>       
    <item name="abDivider">@drawable/ab_divider</item>
</style>

感谢!

2个回答

22

ActionBarSherlock v3.5已更新所有与操作项视图和类相关的源代码,其中包含了来自Ice Cream Sandwich的源代码。这意味着在放置两个操作项之间的分隔符时,遵循与ICS相同的规则。

下列情况之间才会显示分隔符:

  • 仅文本后跟文本
  • 仅图标后跟文本
  • 文本和图标后跟文本

如果你想覆盖此行为(仅针对pre-3.0),请对进行以下更改:


谢谢,我没想到会有更好的答案! - TOMKA
为什么谷歌安卓应用程序在图标之间显示分隔线?请查看YouTube应用程序。 - James Goodwin
1
这不适用于4.0.2。我如何在那里实现相同的效果? - Binoy Babu
7
ActionBarSherlock v4.1.0 版本开始,需要修改的源代码位于 com/actionbarsherlock/internal/view/menu/ActionMenuItemView.java 中,搜索 needsDividerBefore 并应用所建议的补丁/修复。 - Dr1Ku
你好,我尝试了这里提供的解决方案并更新了ActionMenuItemView.java文件,但对我没有起作用。只有在文本后面跟着图标时才会显示分隔线。请帮忙。我该怎么办? - Dory
显示剩余2条评论

9
您可以在操作栏项旁边添加一个视图,使其看起来像分隔符(适用于所有Android版本)。
<item
    android:actionViewClass="com.example.ActionSeparatorView"
    android:showAsAction="always"
    android:title="@null"/>

而ActionSeparatorView是ImageView的一个简单扩展,具有您想要显示为分隔符的可绘制内容。

public class ActionSeparatorView extends ImageView {
public ActionSeparatorView (Context context) {
    super(context);
    setImageDrawable(getResources().getDrawable(R.drawable.separator));
  }
}

1
运行得很好。只有对你的爱。(Y) - Farhan
我尝试使用这种方法,分隔符出现了,但是它增加了菜单项之间的很多空间。 - Signcodeindie

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