studio oreo notificaciones navegacion iconos estado color cambiar barra android icons toolbar android-support-library

android - oreo - Cómo cambiar el color del icono de inicio de la barra Google



cambiar color barra de notificaciones huawei (10)

Bueno, hay una manera más fácil de hacer esto

<?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:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:orientation="vertical" app:theme="@style/ThemeOverlay.AppCompat.Dark"> </android.support.v7.widget.Toolbar>

Y entonces

mToolbar = (Toolbar) findViewById(R.id.navigation); setSupportActionBar(mToolbar);

Estoy usando un android.support.v7.widget.Toolbar y aprendí de esta publicación cómo cambiar el color del icono de hamburguesa a blanco, pero la flecha hacia arriba / hacia atrás sigue siendo de color oscuro cuando llamo

setDisplayHomeAsUpEnabled(true);

¿Cómo puedo hacer que la flecha sea blanca también?

Así es como se ve mi barra de herramientas cuando llamo a setDisplayHomeAsUpEnabled ():

... y aquí está la parte relevante de mi archivo styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">#194C5F</item> <item name="colorAccent">@color/accent</item> <item name="drawerArrowStyle">@style/WhiteDrawerIconStyle</item> </style> <style name="WhiteDrawerIconStyle" parent="Widget.AppCompat.DrawerArrowToggle"> <item name="spinBars">true</item> <item name="color">@android:color/white</item> </style>


Cambie el tema de su barra de herramientas a ThemeOverlay.AppCompat.Dark

arrow.setColor(getResources().getColor(R.color.blue);

y ponerlo en actividad

<!-- ToolBar --> <style name="ToolBarTheme.ToolBarStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:textColorPrimary">@android:color/white</item> <item name="android:textColor">@color/white</item> <item name="android:textColorPrimaryInverse">@color/white</item> </style>


En lugar de cambios de estilo, simplemente ponga estas dos líneas de código a su actividad.

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.drawable.arrowleft);


En lugar de utilizar el id. De dibujo antiguo " abc_ic_ab_back_material ", use el nuevo abc_ic_ab_back_material en cada versión de la API. Lo he probado en 19, 21, 27 y funciona bien con el siguiente código y configuración.

  • minSdkVersion = 17
  • targetSdkVersion = 26
  • compileSdkVersion = 27

    public static Drawable changeBackArrowColor(Context context, int color) { int res; res = context.getResources().getIdentifier("abc_ic_ab_back_material", "drawable", context.getPackageName()); if (res == 0) return null; final Drawable upArrow = ContextCompat.getDrawable(context, res); upArrow.setColorFilter(ContextCompat.getColor(context, color), PorterDuff.Mode.SRC_ATOP); return upArrow;

    }


Esta respuesta tal vez sea demasiado tarde, pero así es como lo hago. Diseñar la barra de herramientas hará el truco. Cree toolbar.xml con el siguiente código.

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:local="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" android:layout_alignParentTop="true" android:layout_gravity="bottom" local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

y en styles.xml

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- --> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> </style>

Finalmente, incluya la barra de herramientas dentro del diseño

<include android:id="@+id/toolbar" layout="@layout/toolbar" />


Este código me funciona:

public static Drawable changeBackArrowColor(Context context, int color) { String resName; int res; resName = Build.VERSION.SDK_INT >= 23 ? "abc_ic_ab_back_material" : "abc_ic_ab_back_mtrl_am_alpha"; res = context.getResources().getIdentifier(resName, "drawable", context.getPackageName()); final Drawable upArrow = context.getResources().getDrawable(res); upArrow.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); return upArrow; } ... getSupportActionBar().setHomeAsUpIndicator(changeBackArrowColor(this, Color.rgb(50, 50, 50))); supportInvalidateOptionsMenu();

Además, si desea cambiar el color del texto de la barra de herramientas:

Spannable spannableString = new SpannableString(t); spannableString.setSpan(new ForegroundColorSpan(Color.rgb(50, 50, 50)), 0, t.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); toolbar.setText(spannableString);

Trabajando desde API 19 hasta 25.


Esto es lo que estás buscando. Pero esto también cambia el color de radioButton, etc. Por lo tanto, es posible que desee utilizar un tema para ello.

<item name="colorControlNormal">@color/colorControlNormal</item>


Lo resolví editando styles.xml:

<style name="ToolbarColoredBackArrow" parent="AppTheme"> <item name="android:textColorSecondary">INSERT_COLOR_HERE</item> </style>

... luego haciendo referencia al estilo en la definición de la barra de herramientas en la actividad:

<LinearLayout android:id="@+id/main_parent_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" app:theme="@style/ToolbarColoredBackArrow" app:popupTheme="@style/AppTheme" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary"/>


Lo resolví mediante programación usando este código:

final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha); upArrow.setColorFilter(Color.parseColor("#FFFFFF"), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow);

Revisión 1:

A partir de la API 23 (Marshmallow), el recurso extraíble abc_ic_ab_back_mtrl_am_alpha se cambia a abc_ic_ab_back_material .


drawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.open_drawer, R.string.close_drawer); arrow = drawerToggle.getDrawerArrowDrawable();

Demasiado tarde para publicar, esto me funcionó para cambiar el color del botón Atrás