【问题标题】:How can I remove the divider between the ActionBar and the tabs如何删除 ActionBar 和选项卡之间的分隔线
【发布时间】:2014-11-03 23:21:06
【问题描述】:

我正在尝试删除 ActionBar 和选项卡之间的分隔线,但我还没有成功。 我已经在我的 style.xml 中尝试了这个<item name="android:actionBarDivider">@color/tab_color</item>,但没有。 简而言之,我想要这样的东西:

这是我的 style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light"/>

<style name="Theme.Styled" parent="@style/Theme.AppCompat.Light">
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowDisablePreview">true</item>
    <item name="android:actionBarItemBackground">@drawable/selectable_background_example</item>
    <item name="android:actionBarTabStyle">@style/Widget.Styled.ActionBar.TabView</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarTabTextStyle">@style/MyCustomTabView</item>
    <item name="android:actionBarDivider">@color/tab_color</item>
</style>

<style name="Widget.Styled.ActionBar.TabView"
    parent="@style/Widget.AppCompat.Light.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator_ab_example</item>
    <item name="android:width">30dp</item>
</style>

<style name="Widget.Styled.ActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="android:background">@color/tab_color</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_example</item>
    <item name="android:backgroundSplit">@color/tab_color</item>
    <item name="android:textColor">@color/tab_text</item>
    <item name="android:titleTextStyle">@style/MyActionBarTextColor</item>
    <item name="android:actionBarDivider">@color/tab_color</item>
</style>

<style name="MyActionBarTextColor" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/tab_text</item>
</style>

<style name="MyCustomTabView" parent="Theme.AppCompat.Light">
    <item name="android:textColor">#ffffff</item>
    <item name="android:textSize">14dp</item>
    <item name="android:textStyle">bold</item>
</style>

这就是我所拥有的

【问题讨论】:

  • 你能发一张它目前的截图吗?

标签: android tabs android-actionbar divider


【解决方案1】:

Theme.Holo.Light 在底部有一个默认阴影,所以可能 appCompat 也是,尝试使用默认的 Theme.AppCompat

你的背景使用图片,尝试使用这样的@color/tab_color

<style name="Widget.Styled.ActionBar"
    parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="android:background">@color/tab_color</item>
    <item name="android:backgroundStacked">@color/tab_color</item>
    <item name="android:backgroundSplit">@color/tab_color</item>
    <item name="android:textColor">@color/tab_text</item>
    <item name="android:titleTextStyle">@style/MyActionBarTextColor</item>
    <item name="android:actionBarDivider">@color/tab_color</item>
</style>

来源:

ActionBarSherlock issue

Removing line or divider in Android

Remove divider under actionbar

Remove blue divider on ICS

【讨论】:

  • 天哪!!!谢谢!!!!就像你说的那样,问题在于我使用了可绘制对象而不是颜色。
  • 他们在 Android 5.0 中是否有所改变?此修复程序以前可以工作。我已将具有 android:elevation 属性的自定义样式应用于 0dp。阴影现在变成了一条细线,但仍然在那里。即使添加了上述属性
【解决方案2】:

您可以通过将此代码粘贴到您的 styles.xml 文件中轻松删除分隔符

<item name="windowActionBarOverlay">true</item>
<item name="android:windowActionBarOverlay">true</item>

但是根据Googles new Tab design principles的说法,标签条的设计不同,颜色的使用方式也不同。

【讨论】:

    【解决方案3】:

    我尝试了发布的答案,但由于某种原因它们对我不起作用。这样做了:

        <item name="windowActionBarOverlay">true</item>
        <item name="android:windowActionBarOverlay">true</item>
    

    我在我的应用主题中设置了这些属性,它对我有用。

    【讨论】: