【问题标题】:Appcompat toolbar's back button and option button are blackAppcompat 工具栏的后退按钮和选项按钮为黑色
【发布时间】:2016-06-17 08:40:42
【问题描述】:

我们在我们的应用中使用新的工具栏而不是旧的操作栏。

在 Android 5 及更高版本上一切正常。在 Android 4 及更低版本上,返回按钮和选项按钮显示为黑色

虽然它们应该是白色

我们的themes.xml 定义如下:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent</item>

    <item name="colorPrimary">@color/ColorPrimary</item>
    <item name="colorPrimaryDark">@color/ColorPrimaryDarker</item>
    <item name="colorAccent">@color/ColorPrimaryRipple</item>
</style>

<!-- AppCompat Theme Transparent -->
<style name="Theme.Translucent" parent="AppTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@color/club_nestle_description_activity_background</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
</style>

工具栏:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/ColorPrimary"
    android:elevation="4dp"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

任何帮助将不胜感激!

【问题讨论】:

    标签: android xml button toolbar


    【解决方案1】:

    试试这个。为您的Toolbar 创建自定义主题:

    <style name="MyToolbarStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="colorControlNormal">@android:color/white</item>
        <item name="android:textColorPrimary">@android:color/white</item>
    </style>
    

    并像这样申请

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/ColorPrimary"
        android:elevation="4dp"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/MyToolbarStyle" />
    

    编辑:如果这不起作用,请尝试在您的 Activity 中以编程方式更改色调:

    final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha);
    upArrow.setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
    getSupportActionBar().setHomeAsUpIndicator(upArrow);
    

    更多信息请参考@Carles answer

    希望对您有所帮助!

    【讨论】:

    • 尝试在你的AppTheme这一行中添加&lt;item name="colorControlNormal"&gt;@android:color/white&lt;/item&gt;
    • 谢谢,但我还是有问题
    【解决方案2】:

    试试这个AppTheme风格:

    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    

    【讨论】:

      【解决方案3】:

      我找到了解决方案:我的 gradle 文件缺少以下几行:

      android {  
         defaultConfig {  
           generatedDensities = []  
        }  
      
        // This is handled for you by the 2.0+ Gradle Plugin  
        aaptOptions {  
          additionalParameters "--no-version-vectors"  
        }  
       } 
      

      【讨论】: