2015-07-21 7 views
2

Может кто-нибудь определить, почему мой переключатель ящика (маленький значок гамбургера, который оживляет открыть ящик навигации) отказывается переключать цвет на меня? Это вызывает у меня много простоя, и я не могу понять, почему.Изменить цвет DrawerToggle на панели инструментов на Android

Вот моя тема - переключатель выдвижного ящика принимает цвет disabled_default_text.

<style name="Theme.MyApp.NoActionBar" parent="Theme.MyApp.NoActionBar"> 
    <item name="actionBarStyle">@style/Widget.MyApp.ActionBar</item> 
    <item name="colorAccent">@color/cs7</item> 
    <item name="colorControlNormal">@color/disabled_default_text</item> 
</style> 

А вот расположение инструментов:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@drawable/ab_solid" 
    android:minHeight="?attr/actionBarSize" 
    app:theme="@style/MyToolbarTheme" 
    app:elevation="@dimen/toolbar_elevation"/> 

MyToolbarTheme - где я перезаписать colorControlNormal с белым цветом.

<style name="MyToolbarTheme"  parent="@style/Widget.AppCompat.ActionBar.Solid"> 
    <item name="background">@drawable/ab_solid</item> 
    <item name="titleTextStyle">@style/MyTitleStyle</item> 
    <item name="colorControlNormal">@color/white</item> 
</style> 

Что странно, что добавление colorControlNormal изменяет цвет меню перелива из disabled_default_text цвета к белому, но ящик переключения не переодеваться. Может ли кто-нибудь понять, что я делаю неправильно?

+0

Что 'Widget.MyApp.ActionBar'? Это поможет, если вы создадите [MCVE] (http://stackoverflow.com/help/mcve). – tachyonflux

ответ

0

доказательство этого:

style.xml

<style name="AppTheme" parent="AppTheme.Base"></style> 

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar"> 
    <item name="colorPrimary">@color/theme_primary</item> 
    <item name="colorPrimaryDark">@color/theme_dark</item> 
    <item name="colorAccent">@color/theme_accent</item> 
    <item name="android:windowBackground">@color/theme_wbackground</item> 
</style> 

стиль-v21.xml

<style name="AppTheme" parent="AppTheme.Base"> 
    <item name="android:colorPrimary">@color/theme_primary</item> 
    <item name="android:colorPrimaryDark">@color/theme_dark</item> 
    <item name="android:colorAccent">@color/theme_accent</item> 
    <item name="android:windowBackground">@color/theme_wbackground</item> 
    <item name="android:navigationBarColor">@color/theme_primary</item> 
</style> 

и ИНТ Панель инструментов: app_bar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@color/theme_primary"/> 
4

Вы можете добавить drawerArrowStyle к вашей теме, как

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="drawerArrowStyle">@style/MyDrawerArrowToggle</item> 
</style> 

и вы можете настроить ваш MyDrawerArrowToggle как

<style name="MyDrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle"> 
     <item name="color">@color/white</item> 
</style> 
0

Выше решений используют стиль, который, вероятно, будет work.But, что если вы хотите, чтобы заменить его с icon.Hope это поможет кому-то.

DrawerLayout mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout); 
Toolbar mToolbar = (Toolbar)findViewById(R.id.toolbar); 
ActionBarDrawerToggle mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, 
      R.string.navigation_drawer_open, R.string.navigation_drawer_close); 

mToggle.setDrawerIndicatorEnabled(false); // this is very important don't miss it 
mToggle.setHomeAsUpIndicator(R.drawable.ic_action_logo); // here your logo 

Когда вы включаете индикатор ящика, вы теряете слушателя при нажатии переключателя, поэтому вы должны справиться с этим самостоятельно.

mToggle.setToolbarNavigationClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
       mDrawerLayout.openDrawer(GravityCompat.START) 
     } 
}); 

Это его счастливым кодирования :)

Смежные вопросы