Cambiar el color de la barra de herramientas en Appcompat 21

Estoy probando las nuevas características de Appcompat 21 Material Design. Por lo tanto, he creado una barra de herramientas como esta:

 

y lo incluí en mi archivo de diseño principal.

Luego lo configuré como supportActionBar así:

 Toolbar toolBar = (Toolbar)findViewById(R.id.activity_my_toolbar); setSupportActionBar(toolBar); 

Está funcionando, pero de alguna manera no puedo entender cómo personalizar la barra de herramientas. Es gris y el texto es negro. ¿Cómo debo cambiar el color de fondo y el texto?

He pasado por estas instrucciones:

http://android-developers.blogspot.de/2014/10/appcompat-v21-material-design-for-pre.html

¿Qué he supervisado para cambiar los colores?

   false false  

EDITAR :

Pude cambiar el color de fondo agregando estas líneas de código al tema:

 @color/actionbar @color/actionbar_dark 

Pero no afectarán el color del texto. ¿Qué me estoy perdiendo? En lugar del botón negro de menú de texto y negro, preferiría un texto blanco y botones de menú en blanco:

enter image description here

de nuevo, todo esto está en el enlace que proporcionó

para cambiar el texto a blanco, todo lo que tienes que hacer es cambiar el tema.

usa este tema

  

Puede utilizar un app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" como se sugiere en otras respuestas, pero también puede usar una solución como esta:

  

Y puedes tener el control total de tus elementos de la interfaz de usuario con estos estilos:

    

Hola, si quieres aplicar el tema Material solo para Android 5.0, entonces puedes agregar este tema en él

  

A continuación, la línea siguiente es responsable del color del texto de la barra de acciones del diseño del material.

 @android:color/white 

Esto es lo que se conoce como DarkActionBar, lo que significa que debe usar el siguiente tema para obtener el estilo que desee:

  

Puede establecer dinámicamente un color de elemento de barra de herramientas personalizado creando una clase de barra de herramientas personalizada:

 package view; import android.app.Activity; import android.content.Context; import android.graphics.ColorFilter; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.support.v7.internal.view.menu.ActionMenuItemView; import android.support.v7.widget.ActionMenuView; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; public class CustomToolbar extends Toolbar{ public CustomToolbar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // TODO Auto-generated constructor stub } public CustomToolbar(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public CustomToolbar(Context context) { super(context); // TODO Auto-generated constructor stub ctxt = context; } int itemColor; Context ctxt; @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { Log.d("LL", "onLayout"); super.onLayout(changed, l, t, r, b); colorizeToolbar(this, itemColor, (Activity) ctxt); } public void setItemColor(int color){ itemColor = color; colorizeToolbar(this, itemColor, (Activity) ctxt); } /** * Use this method to colorize toolbar icons to the desired target color * @param toolbarView toolbar view being colored * @param toolbarIconsColor the target color of toolbar icons * @param activity reference to activity needed to register observers */ public static void colorizeToolbar(Toolbar toolbarView, int toolbarIconsColor, Activity activity) { final PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(toolbarIconsColor, PorterDuff.Mode.SRC_IN); for(int i = 0; i < toolbarView.getChildCount(); i++) { final View v = toolbarView.getChildAt(i); doColorizing(v, colorFilter, toolbarIconsColor); } //Step 3: Changing the color of title and subtitle. toolbarView.setTitleTextColor(toolbarIconsColor); toolbarView.setSubtitleTextColor(toolbarIconsColor); } public static void doColorizing(View v, final ColorFilter colorFilter, int toolbarIconsColor){ if(v instanceof ImageButton) { ((ImageButton)v).getDrawable().setAlpha(255); ((ImageButton)v).getDrawable().setColorFilter(colorFilter); } if(v instanceof ImageView) { ((ImageView)v).getDrawable().setAlpha(255); ((ImageView)v).getDrawable().setColorFilter(colorFilter); } if(v instanceof AutoCompleteTextView) { ((AutoCompleteTextView)v).setTextColor(toolbarIconsColor); } if(v instanceof TextView) { ((TextView)v).setTextColor(toolbarIconsColor); } if(v instanceof EditText) { ((EditText)v).setTextColor(toolbarIconsColor); } if (v instanceof ViewGroup){ for (int lli =0; lli< ((ViewGroup)v).getChildCount(); lli ++){ doColorizing(((ViewGroup)v).getChildAt(lli), colorFilter, toolbarIconsColor); } } if(v instanceof ActionMenuView) { for(int j = 0; j < ((ActionMenuView)v).getChildCount(); j++) { //Step 2: Changing the color of any ActionMenuViews - icons that //are not back button, nor text, nor overflow menu icon. final View innerView = ((ActionMenuView)v).getChildAt(j); if(innerView instanceof ActionMenuItemView) { int drawablesCount = ((ActionMenuItemView)innerView).getCompoundDrawables().length; for(int k = 0; k < drawablesCount; k++) { if(((ActionMenuItemView)innerView).getCompoundDrawables()[k] != null) { final int finalK = k; //Important to set the color filter in seperate thread, //by adding it to the message queue //Won't work otherwise. //Works fine for my case but needs more testing ((ActionMenuItemView) innerView).getCompoundDrawables()[finalK].setColorFilter(colorFilter); // innerView.post(new Runnable() { // @Override // public void run() { // ((ActionMenuItemView) innerView).getCompoundDrawables()[finalK].setColorFilter(colorFilter); // } // }); } } } } } } } 

luego refiérase a él en su archivo de diseño. Ahora puedes establecer un color personalizado usando

 toolbar.setItemColor(Color.Red); 

Fuentes:

Encontré la información para hacer esto aquí: Cómo cambiar dinámicamente los icons de la barra de herramientas de Android en color

y luego lo edité , lo mejoré y lo publiqué aquí: GitHub: AndroidDynamicToolbarItemColor

Puede cambiar el color del texto en la barra de herramientas con estos:

 #FFFFFF #FFFFFF 

Logre esto usando la toolbar esta manera:

  

Pruebe esto en su styles.xml:

colorPrimary será el color de la barra de herramientas.

   

¿Construiste esto en Eclipse por cierto?

resolví este problema después de más estudio …

para Api21 y más uso

  @color/white 

para versiones inferiores use

  @color/white 

Si desea cambiar el color de su barra de herramientas en toda su aplicación, aproveche el archivo styles.xml. En general, evito alterar los componentes de la interfaz de usuario en mi código java a menos que intente hacer algo programáticamente. Si se trata de un conjunto de una vez, entonces debe hacerlo en xml para que su código sea más limpio. Así es como se verá tu styles.xml:

    

Asegúrate de utilizar el estilo anterior en tu AndroidManifext.xml como tal:

    

Quería colores de barra de herramientas diferentes para diferentes actividades. Así que aproveché los estilos de nuevo de esta manera:

    

nuevamente, aplique los estilos a cada actividad en su AndroidManifest.xml como tal:

   

Para las personas que usan AppCompatActivity con la barra de herramientas como fondo blanco. Utiliza este código

Actualizado: diciembre de 2017