Diğer yanıtların hiçbiri özel bir stil geçersiz kılma sağlamadığından (bunu yapmanın en güvenli güncelleme yollarından biri olduğunu düşünüyorum) çözümümü buraya gönderiyorum.
Zaten yeni AndroidX
( support design 28
) temasına hitap eden bir çözüm gönderiyorum.
Uygulamanızın MyAppTheme
sizin adınızda çağrılan bir özel kullanması şartıyla 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
Uygulamanız tarafından kullanılan temayı geçersiz kılan (henüz yapmadıysanız) dosya oluşturun:
<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>
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@color/mySnackbarBackgroundColor</item>
</style>
ve renklerinizi values/colors.xml
dosyanıza ekleyin
<?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>
GÜNCELLEME 2020
Yukarıdaki çözüm, atıştırmalıkların yuvarlak köşesini ortadan kaldırdığı için arka planı bu şekilde ayarlamak, eski snackbar tasarımını kullanır, eğer malzeme tasarımını korumak istiyorsanız yapabilirsiniz.
- API 21+ hedefliyorsanız
yerine android:background
sahipandroid:backgroundTint
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:backgroundTint">@color/mySnackbarBackgroundColor</item>
</style>
API <21 için eski snackbar kullanmaya karar verirseniz o zaman API <21 hedeflemesi varsa size abouve ayarlayabilirsiniz MySnackbarStyle
içinde res / değerler-21 / klasör ve önceki bırakın - miras - senin stili res / değerler klasörü.
API <21'i hedefliyorsanız ve atıştırmalık çubuğunun materyal stilini bu düşük API seviyelerinde de kullanmak istiyorsanız, snackbar stilinizi res / değerleriniz / bu şekilde değiştirebilirsiniz:
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@drawable/my_snackbar_background</item>
</style>
ve ödünç my_snackbar_background
gelen resmi repo , bu şekilde:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="4dp"/>
<solid android:color="@color/mySnackbarBackgroundColor"/>
</shape>
İşte bir oyun alanı deposu .