Como ninguna de las otras respuestas proporcionó una anulación de estilo personalizado (que considero una de las formas de actualización más seguras de hacerlo), publico aquí mi solución.
Publico una solución que ya aborda el tema new AndroidX
( support design 28
).
Siempre que su aplicación utilice un nombre personalizado llamado MyAppTheme
en su AndroidManifest.xml
:
<application
android:name=".MyApplicationName"
android:allowBackup="true"
android:icon="@mipmap/icon"
android:roundIcon="@mipmap/icon_round"
android:label="@string/app_name"
android:theme="@style/MyAppTheme">
Cree (si aún no lo ha hecho) un values/style.xml
archivo que anule el tema utilizado por su aplicación:
<style name="MyAppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="colorPrimary">@color/myColorPrimary</item>
<item name="colorPrimaryDark">@color/myColorPrimaryDark</item>
<item name="colorAccent">@color/myColorAccent</item>
<item name="snackbarStyle">@style/MySnackBarStyle</item>
</style>
<!-- snackbar style in res/values -->
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@color/mySnackbarBackgroundColor</item>
</style>
y proporcione sus colores en su values/colors.xml
archivo
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="myColorPrimary">#008577</color>
<color name="myColorPrimaryDark">#00574B</color>
<color name="myColorAccent">#D81B60</color>
<color name="mySnackbarBackgroundColor">#D81B60</color>
</resources>
ACTUALIZAR 2020
Como la solución anterior elimina la esquina redonda del bocadillo, porque al establecer el fondo de esta manera se usa el diseño heredado de la barra de bocadillos, si desea conservar el diseño del material, puede hacerlo.
- Si tiene como objetivo API 21+
reemplazar android:background
conandroid:backgroundTint
<!-- snackbar style in res/values-21/ -->
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:backgroundTint">@color/mySnackbarBackgroundColor</item>
</style>
Si está apuntando a API <21, entonces si decide usar la barra MySnackbarStyle
de bocadillos heredada para API <21, puede configurar su abouve en la carpeta res / values-21 / y dejar el estilo anterior (heredado) en su carpeta res / values .
Si está apuntando a API <21 y desea tener el estilo de material de la barra de aperitivos también en estos niveles de API más bajos, puede cambiar el estilo de la barra de aperitivos en sus res / valores / de esta manera:
<!-- snackbar style in res/values/ -->
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@drawable/my_snackbar_background</item>
</style>
y pida prestado su my_snackbar_background
del repositorio oficial , de esta manera:
<!-- in res/drawable/ -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="4dp"/>
<solid android:color="@color/mySnackbarBackgroundColor"/>
</shape>
Aquí hay un repositorio de juegos .