【问题标题】:Light theme action bar have weird artefact since AppCompat v21自 AppCompat v21 以来,轻主题操作栏有奇怪的伪影
【发布时间】:2015-07-30 16:58:36
【问题描述】:

自从我将 appcompat 升级到 v21(现在是 v22.2.1)后,当使用浅色主题时,操作栏有一个非常奇怪的伪像,如下面的屏幕截图所示。使用深色主题时,没有任何问题!

我尝试使用它来更改操作栏的样式,它可以工作,但是没有更多的标题!所有其他 ActionBar 样式都显示了人工制品。

<item name="actionBarStyle">@style/Widget.AppCompat.Light.ActionBar.TabBar</item>

这是我的深色/浅色主题定义:

<style name="AT_Theme" parent="@style/Theme.AppCompat">
    <item name="android:windowBackground">@android:color/black</item>
    <item name="android:colorBackground">@android:color/black</item>
    <item name="android:textColorPrimary">#ffffffff</item>
    <item name="switchStyle">@style/switch_dark</item>
    <item name="android:textAppearanceButton">@style/CustomTheme.ButtonTextAppearance</item>

    <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material_light</item>
    <item name="android:listChoiceIndicatorMultiple">@drawable/abc_btn_check_material_light</item>
</style>

<style name="AT_Theme_Light" parent="@style/Theme.AppCompat.Light">
    <item name="android:windowBackground">@android:color/white</item>
    <item name="android:colorBackground">@android:color/white</item>
    <item name="android:textColorPrimary">#ff000000</item>

    <item name="switchStyle">@style/switch_light</item>
    <item name="android:textAppearanceButton">@style/CustomTheme.ButtonTextAppearance</item>

    <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
    <item name="android:listChoiceIndicatorMultiple">@drawable/abc_btn_check_material</item>
</style>

我尝试调整/覆盖很多东西都无济于事。还要搜索可以执行此操作的颜色定义或可绘制对象,那里也没有结果。

请帮我摆脱那个人工制品:

【问题讨论】:

  • 看起来您正在为 ActionBar 使用 TabBar 样式,而不是 ActionBar 样式。
  • 如果我不使用 ToolBar 或 TabBar 样式(有效地使用 ActionBar 样式)我会得到这种奇怪的效果,但只有浅色主题,这就是我遇到的问题,因此我发布了解决方案下面..

标签: android android-actionbar android-appcompat


【解决方案1】:

原来解决方案如此简单:

1) 在应用的自定义主题中更改 actionBarStyle,明暗都适用:

    <item name="actionBarStyle">@style/Widget.AppCompat.Light.ActionBar.Toolbar</item>

2) 在代码中启用标题:

    ActionBar ab = aba.getSupportActionBar();
    if (ab != null)
        ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE,ActionBar.DISPLAY_SHOW_TITLE);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多