【问题标题】:How to change Toolbar home icon(back arrow) color in new material theme?如何在新材质主题中更改工具栏主页图标(后退箭头)颜色?
【发布时间】:2016-08-20 11:00:15
【问题描述】:

我一一尝试了链接上的所有内容,例如

How to change color of the back arrow in the new material theme?

How to change Toolbar home icon color

Change toolbar back arrow color

How to change change text and arrow color on Toolbar?

Android: unable to change color of back arrow navigation icon

等等,

但对我没有任何作用。

我的布局xml代码,

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        style="@style/MyCustomTabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="?attr/colorPrimary"
        android:elevation="6dp"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        style="@style/MyCustomTabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:minHeight="?attr/actionBarSize"
        app:tabMaxWidth="0dp" />

在styles.xml中

<style name="MyCustomTabLayout" parent="Theme.AppCompat.Light">
    <item name="tabIndicatorHeight">2dp</item>
    <item name="tabPaddingStart">12dp</item>
    <item name="android:layout_width">match_parent</item>
    <item name="tabPaddingEnd">12dp</item>
    <item name="tabBackground">@drawable/background_tab_item</item>
    <item name="tabIndicatorColor">@color/jd_yellow</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:gravity">center</item>
    <item name="tabSelectedTextColor">@color/jd_white</item>
    <item name="tabTextAppearance">@style/MyCustomTabTextAppearance</item>
    <item name="android:textAppearance">@style/MyCustomTabTextAppearance</item>
    <item name="android:background">@drawable/background_tab_item</item>
    <item name="android:textColorSecondary">@color/jd_white</item>
    <item name="colorControlNormal">@color/jd_white</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
    <item name="actionBarTheme">@style/MyApp.ActionBarTheme</item>
    <item name="actionBarWidgetTheme">@style/WidgetStyle</item>
    <item name="colorPrimary">@color/jd_white</item>
    <item name="colorPrimaryDark">@color/jd_white</item>
    <item name="android:textColorPrimary">@color/jd_white</item>
</style>

<style name="WidgetStyle" parent="style/ThemeOverlay.AppCompat.Light">
    <item name="colorControlNormal">@color/jd_white</item>
</style>

<style name="MyApp.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
    <!-- change color the arrow or three lines -->
    <item name="colorControlNormal">@color/jd_white</item>
</style>

<!-- Style for the navigation drawer icon -->
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@color/jd_white</item>
</style>

<style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab">
    <item name="android:textColor">@color/jd_white</item>
    <item name="android:textSize">@dimen/tab_layout_text_size</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:gravity">center</item>
</style>

还尝试在 onCreate() 中添加以下内容

  Drawable upArrow = ContextCompat.getDrawable(mContext, R.drawable.abc_ic_ab_back_material);
        upArrow.setColorFilter(ContextCompat.getColor(mContext, R.color.white), PorterDuff.Mode.SRC_ATOP);
        getSupportActionBar().setHomeAsUpIndicator(upArrow);

什么都没用,还是黑色, 我做错了什么??请帮忙。

【问题讨论】:

    标签: android material-design toolbar android-appcompat android-tablayout


    【解决方案1】:

    很简单,这对我有用:

        <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="@color/PrimaryColor"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        android:elevation="4dp" />
    

    【讨论】:

      【解决方案2】:

      您可以制作自己喜欢的任何颜色的资源,然后将其放在工具栏上。

      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
              setSupportActionBar(toolbar);
              getSupportActionBar().setDisplayHomeAsUpEnabled(true);
              getSupportActionBar().setHomeAsUpIndicator(R.drawable.YOUR_ASSET);
      

      【讨论】:

      • 但是如果抽屉打开了怎么办?默认情况下,抽屉打开时三行图像变为黑色箭头(也有动画),我可以用这个实现相同的效果吗?
      【解决方案3】:

      尝试将此样式用作工具栏的 android:theme:

      <style name="ToolbarStyle" parent="@style/ThemeOverlay.AppCompat.Dark">
          <item name="android:textColorSecondary">@color/jd_white</item>
      </style>
      

      喜欢

      <android.support.v7.widget.Toolbar
          android:id="@+id/toolbar"
          style="@style/MyCustomTabLayout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:background="?attr/colorPrimary"
          android:elevation="6dp"
          android:minHeight="?attr/actionBarSize"
          android:theme="@style/ToolbarStyle"
          app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
      

      【讨论】:

        【解决方案4】:

        经过无数次的黑客攻击和奇怪的情况,这就像魅力

         <style name="App"/>
        <style name="App.Toolbar">
            <item name="android:id">@id/toolbar</item>
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">?attr/actionBarSize</item>
            <item name="android:background">@android:color/white</item>
            <item name="android:minHeight">?attr/actionBarSize</item>
            <item name="android:theme">@style/ThemeOverlay.AppCompat.Light</item>
            <item name="popupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
        </style>
        <style name="App.Toolbar.Transparent">
            <item name="android:background">@android:color/transparent</item>
        </style>
        

        【讨论】:

          猜你喜欢
          • 2015-01-03
          • 2016-04-07
          • 2015-04-21
          • 2017-07-09
          • 1970-01-01
          • 1970-01-01
          • 2020-08-15
          • 2019-06-03
          • 2020-09-13
          相关资源
          最近更新 更多