2015-01-09 14 views
11

Kiedy próbuję zmienić kolor przełącznika szuflady nawigacji, zmienia się tylko hamburger, strzałka zachowuje swój macierzysty kolor. Można go zobaczyć tutaj - enter image description hereActionBarDrawerToggle v7 arrow color

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:windowBackground">@drawable/app_background</item> 
    <item name="android:dropDownListViewStyle">@style/DropDownListViewStyle</item> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
    <item name="android:textColor">@color/primary_text</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
</style> 

<style name="DrawerArrowStyle" parent="@style/Widget.AppCompat.DrawerArrowToggle"> 
    <item name="spinBars">true</item> 
    <item name="color">@android:color/holo_red_dark</item> 
</style> 

Jeśli zmienię nadrzędny motyw do Theme.AppCompat.Light strzałka zmienia swój kolor na czarny. Używany jest następujący widget: android.support.v7.app.ActionBarDrawerToggle; android.support.v7.widget.Toolbar;

Co robię źle?

+0

Możliwy duplikat [Kolor animowanego ActionBarDrawerToggle w ActionBar] (http://stackoverflow.com/questions/27250915/color-of-animated-actionbardrawertoggle-in-actionbar) – Sanf0rd

+0

Odpowiedziałem, jak to zrobić programowo w innym pytaniu (http://stackoverflow.com/questions/27250915/color-of-animated-actionbardrawertoggle-in-actionbar/40164200#40164200). Oznacz to pytanie jako duplikat. – Sanf0rd

Odpowiedz

0

Mogłeś Custom strzałka lub inna ikona stosując metodę

toolbar.setNavigationIcon(Int drawable resource); 
9

Spróbuj użyć

 <item name="colorControlNormal">@color/your_color</item> 
     <item name="android:colorControlNormal">@color/your_color</item> 

zamiast swojego stylu strzałki szuflady.

Aby usunąć mój komentarz, spróbuj również:

<item name="actionBarStyle">@style/My.ActionBar.Style</item> 

, a następnie:

 <style name="My.ActionBar.Style" parent="Widget.AppCompat.ActionBar"> 

     <item name="colorControlNormal">@color/your_color</item> 
     <item name="android:colorControlNormal">@color/your_color</item> 

    </style> 
+0

Strzałka zmieniła kolor na biały. Magia. –

+0

To przyszło mi pracować. Spróbuj wkleić go do ' @ style/Your.Custom.ActionBar.Style' – natario

+0

W końcu zauważyłem, że 'colorControlNormal' działa tylko wtedy, gdy używasz ikony strzałki dostarczonej do zestawu SDK z biblioteką wsparcia (a mianowicie '@ drawable/abc_ic_ab_back_mtrl_am_alpha'). Nie będzie działać, jeśli zaimportujesz ikonę z innego miejsca, ponieważ appcompat tylko przyciemnia własne rysunki. Jeśli chcesz użyć innej ikony, nie możesz jej odcień przez styl. – natario

6

Spróbuj tego zmienić kolor z DrawerArrow

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> 
    <item name="spinBars">true</item> 
    <item name="color">@android:color/white</item> 
</style> 
+0

pracował dla mnie. Dzięki! –

5

Ten pracował dla mnie:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      mDrawerToggle.getDrawerArrowDrawable().setColor(getColor(R.color.drawer_toggle_color)); 
     } else { 
      mDrawerToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.drawer_toggle_color)); 
     }