更新到支持库23.2.0后,前棒棒糖设备中的后箭头和溢出图标颜色错误

hen*_*000 27 android android-support-library androiddesignsupport

在Lollipop之前的设备上,升级到Support Library 23.2.0后,操作栏上的溢出菜单图标和后退按钮变为黑色.它们在升级之前是白色的(这是正确的颜色).

正确的颜色是: 在此输入图像描述

升级后,前Lollipop设备会显示错误的颜色,如溢出菜单图标所示:

在此输入图像描述

sytle.xml中的主题(pre-v21/Lollipop):

<resources xmlns:android="http://schemas.android.com/apk/res/android" >
    <!--Used on the application level by the manifest.-->
    <style name="app_theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/app_primary_colour</item>
        <item name="colorPrimaryDark">@color/app_primary_dark_colour</item>
        <item name="colorAccent">@color/app_accent_colour</item>
        <item name="android:windowBackground">@color/app_background</item>
        <item name="searchViewStyle">@style/custom_search_view_style</item>
    </style>

    <!--Used by activities.-->
    <style name="app_theme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <!--TODO: What are these?-->
    <style name="app_theme.app_bar_overlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    <style name="app_theme.popup_overlay" parent="ThemeOverlay.AppCompat.Light" /> ... ... </resources>
Run Code Online (Sandbox Code Playgroud)

我看过这里这里但没有解决问题.

更新:另请参阅此Google错误报告:https: //code.google.com/p/android/issues/detail?id = 201918

W0r*_*0le 35

我可以解决.

我发现AppCompat主题使用以下资源进行溢出按钮: abc_ic_menu_overflow_material.xml

该资源的内容是:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0"
        android:tint="?attr/colorControlNormal">
    ...
</vector>
Run Code Online (Sandbox Code Playgroud)

然后,我连接点:

  • 第一:它使用colorControlNormal
  • 第二:它正在使用矢量

怎么修

根据Library V23.2.0发行说明(LINK HERE),我们必须更新build.gradle以添加对Vector的支持:

的build.gradle

将以下行添加到构建gradle中

Gradle 2.0(我没有测试过):

android {  
    defaultConfig {  
        vectorDrawables.useSupportLibrary = true  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

Gradle 1.5(我正在使用它..它有效):

android {  
    defaultConfig {  
        generatedDensities = []  
    }  

    aaptOptions {  
        additionalParameters "--no-version-vectors"  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

修复你的主题

此步骤可能会被忽略.一些基本主题已设置colorControlNormal为白色(例如AppCompat.Dark.ActionBar).

但是,在我的情况下,所有按钮颜色都保持黑色,我不得不添加colorControlNormal到我的主题并用白色覆盖它.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorControlNormal">@color/white</item>
</styel>
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮到你.

这就是我解决问题的方法.

  • 谢谢,这对我有用!事实上,我只需要添加Gradle配置(我也使用1.5),甚至不需要添加ColorControlNormal. (8认同)

Jor*_*tor 7

只需更新到支持库23.2.1,它就可以解决问题.

对于AppCompat用户,使用AppCompat时不再需要23.2博客文章(http://goo.gl/073Mpo)中描述的用于启用支持向量drawable的标志.

https://plus.google.com/+AndroidDevelopers/posts/BZgzpAqkd8G