Оскільки жодна з інших відповідей не передбачає заміни власного стилю (що я вважаю одним із найбезпечніших способів оновлення), я розміщую тут своє рішення.
Я публікую рішення, яке вже стосується нової AndroidX
( support design 28
) теми.
За умови, що у вашій програмі використовуються власні, які вони називаються MyAppTheme
у вашому 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">
Створіть (якщо ви ще цього не зробили) values/style.xml
файл, який замінює тему, що використовується вашою програмою:
<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>
і вкажіть свої кольори у своєму values/colors.xml
файлі
<?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>
ОНОВЛЕННЯ 2020
Оскільки вищевказане рішення видаляє круглий кут закусочної, оскільки для встановлення фону таким чином використовується застарілий дизайн закусочної, якщо ви хочете зберегти матеріальний дизайн, який ви можете.
- Якщо ви націлюєтесь на API 21+
замінити android:background
наandroid:backgroundTint
<!-- snackbar style in res/values-21/ -->
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:backgroundTint">@color/mySnackbarBackgroundColor</item>
</style>
Якщо ви націлюєтесь на API <21, то якщо ви вирішите використовувати застарілу закусочну для API <21, ви можете встановити свою abouve MySnackbarStyle
у папці res / values-21 / і залишити попередній - legacy - стиль у вашому папці res / values .
Якщо ви націлюєтесь на API <21, і ви хочете мати матеріальний стиль закусочної, також на цьому нижчому рівні API ви можете змінити свій стиль закусочної у своїх res / values / таким чином:
<!-- snackbar style in res/values/ -->
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@drawable/my_snackbar_background</item>
</style>
і позичте свій my_snackbar_background
з офіційного репо , таким чином:
<!-- 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>
Ось репо дитячого майданчика .