Como nenhuma das outras respostas forneceu uma substituição de estilo personalizado (que considero uma das formas de atualização mais seguras de fazer isso), posto aqui minha solução.
Eu posto uma solução que já aborda o tema new AndroidX
( support design 28
).
Desde que seu aplicativo use um personalizado chamado MyAppTheme
em 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">
Crie (se ainda não o fez) values/style.xml
substituindo o tema usado pelo seu aplicativo:
<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>
e forneça suas cores em seu values/colors.xml
arquivo
<?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>
ATUALIZAÇÃO 2020
Como a solução acima remove o canto arredondado do fundo do lanche, definir o plano de fundo dessa forma usa o design de barra de lanche legado, se você quiser preservar o design do material, pode.
- Se você tem como alvo a API 21+
substituir android:background
comandroid:backgroundTint
<!-- snackbar style in res/values-21/ -->
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:backgroundTint">@color/mySnackbarBackgroundColor</item>
</style>
Se você está visando API <21, então se você decidir usar o snackbar legado para API <21, você pode definir seu abouve MySnackbarStyle
em res / values-21 / folder e deixar o estilo anterior - legacy - em sua pasta res / values .
Se você tem como alvo a API <21 e deseja ter o estilo de material da lanchonete também nesses níveis de API mais baixos, você pode alterar o estilo da lanchonete em seus res / valores / desta forma:
<!-- snackbar style in res/values/ -->
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@drawable/my_snackbar_background</item>
</style>
e peça emprestado my_snackbar_background
do repositório oficial , desta forma:
<!-- 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>
Aqui está um repositório de playground .