android - change - Barra de herramientas de AppCompat: cambiar el color del icono de desbordamiento en ActionMode
change toolbar color android programmatically (9)
Agregue este código en su res-> styles.xml
<style name="ToolbarColored" parent="AppTheme">
<item name="android:textColorSecondary">YOUR_COLOR</item>
</style>
Entonces su estilo ''ToolbarColored'' en su archivo XCML como belove
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
app:theme="@style/ToolbarColored"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
Con la barra de herramientas de AppCompat, quiero poder cambiar el color del icono del menú de desbordamiento en el cambio de ActionMode.
Por ejemplo, el icono de desbordamiento será blanco en el modo normal de la barra de herramientas. Y se volverá negro en ActionMode. Hasta ahora, he logrado cambiar el fondo del modo de acción, así como el texto del título. Pero todavía tengo que encontrar una manera de cambiar el color del icono del menú de desbordamiento.
Sé que hay una respuesta disponible: Cambiar el icono de desbordamiento de ActionMode
Probé la primera solución y no pude encontrar el icono de desbordamiento.
La segunda solución, incluso con un retraso de 50L, hace que el icono del menú de desbordamiento muestre el color deseado del ActionMode durante una breve fracción de segundo que es muy discordante.
Agregue la siguiente línea en su atributo de tema:
<item name="android:textColorSecondary">@android:color/white</item>
Esto se puede lograr configurando el atributo de tema android:textColorSecondary
.
Por ejemplo, suponga que tiene la siguiente barra de herramientas, que usa el tema MyToolbarStyle
:
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
theme="@style/MyToolbarStyle"
/>
A continuación, defina el estilo MyToolbarStyle
, heredando de ThemeOverlay.AppCompat.ActionBar
. Finalmente, modifique el color del icono de desbordamiento agregando un elemento para android:textColorSecondary
:
<style name="MyToolbarStyle" parent="ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorSecondary">#333333</item>
</style>
Para cambiar correctamente el color del ícono del menú de desbordamiento de su barra de herramientas, configure el tema de su barra de herramientas en un tema de Barra de Acción Oscura de AppCompat. Por ejemplo:
En su archivo res / values / style.xml cree un tema que herede de AppCompat de esta manera:
<style name="AppTheme.MyThemeName" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
Ahora establece el tema de tu barra de herramientas para este tema:
<android.support.v7.widget.Toolbar
android:id="+id/my_toolbar_id
android:layout_width="match_parent"
android:layout_height="@dimen/my_toolbar_height"
android:theme="@style/AppTheme.MyThemeName">
</android.support.v7.widget.Toolbar>
Primero haz tu estilo personalizado.
<style name="ToolbarColoredBackArrow" parent="AppTheme">
<item name="android:textColorSecondary">@color/white</item>
</style>
Luego simplemente agrégalo a tu barra de herramientas
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:titleTextColor="@color/white"
app:theme="@style/ToolbarColoredBackArrow"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
android:background="?attr/colorPrimary" />
Si desea que el icono del menú de desbordamiento blanco simplemente agregue android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
a su código de diseño de la barra de herramientas.
Si desea que el icono del menú de desbordamiento oscuro use android:theme="@style/Base.Widget.AppCompat.Light.PopupMenu"
Así que el código final es algo como:
<android.support.v7.widget.Toolbar
android:id="@+id/a_main_tb"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="@string/app_name"
app:titleTextColor="#ffffff"
/>
Además, debe comprender que también cambiará el color de los elementos del menú.
Si está utilizando la barra de herramientas en su xml de actividad, puede usar algo como esto
toolbar?.navigationIcon?.setColorFilter(ContextCompat.getColor(this, android.R.color.black), PorterDuff.Mode.SRC_ATOP)
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionOverflowButtonStyle">@style/ActionButtonOverflow</item>
<!-- Support library compatibility -->
<item name="actionOverflowButtonStyle">@style/ActionButtonOverflow</item>
</style>
<style name="ActionButtonOverflow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">@color/brand_white</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:actionOverflowButtonStyle">@style/ActionButton.Overflow.Icon</item>
</style>
<style name="ActionButton.Overflow.Icon" parent="android:style/Widget.Holo.Light.ActionButton.Overflow">
<item name="android:src">@mipmap/yourwanticon</item>
</style>