जैसा कि अन्य उत्तरों में से कोई भी एक कस्टम स्टाइल ओवरराइड प्रदान नहीं करता है (कि मैं ऐसा करने के लिए सबसे सुरक्षित अपडेट तरीके में से एक मानता हूं) मैं यहां अपना समाधान पोस्ट करता हूं।
मैं एक समाधान पोस्ट करता हूं जो पहले से ही नए 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 / मान -21 / फ़ोल्डर में सेट कर सकते हैं और अपने Res / मान फ़ोल्डर में पिछली - विरासत शैली छोड़ सकते हैं ।
यदि आप API <21 को लक्षित कर रहे हैं और आप चाहते हैं कि स्नैकबार की सामग्री शैली भी इस निम्न एपीआई स्तरों में हो तो आप अपने रेस / मूल्यों में अपने स्नैकबार शैली को बदल सकते हैं :
<!-- 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>
यहाँ एक खेल का मैदान रेपो है ।