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 MyAppThemeen 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.xmlarchivo 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.xmlarchivo
<?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:backgroundconandroid: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 MySnackbarStylede 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_backgrounddel 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 .
