เนื่องจากไม่มีคำตอบอื่นใดที่ให้การลบล้างสไตล์ที่กำหนดเอง (ซึ่งฉันคิดว่าเป็นวิธีการอัปเดตที่ปลอดภัยที่สุดวิธีหนึ่ง) ฉันโพสต์วิธีแก้ปัญหาไว้ที่นี่
ฉันโพสต์วิธีแก้ปัญหาที่กล่าวถึงธีม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>
<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
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:backgroundTint">@color/mySnackbarBackgroundColor</item>
</style>
หากคุณกำหนดเป้าหมาย API <21 ถ้าคุณตัดสินใจที่จะใช้สแน็กบาร์แบบเดิมสำหรับ API <21 คุณสามารถตั้งค่า abouve ของคุณMySnackbarStyle
ในres / values-21 /โฟลเดอร์และปล่อยสไตล์เดิมไว้ในโฟลเดอร์res / values ของคุณ
หากคุณกำหนดเป้าหมาย API <21 และคุณต้องการให้มีสไตล์วัสดุของสแน็คบาร์ในระดับ API ที่ต่ำกว่านี้ด้วยคุณสามารถเปลี่ยนสไตล์สแน็คบาร์ของคุณได้ในความละเอียด / ค่า /วิธีนี้:
<style name="MySnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@drawable/my_snackbar_background</item>
</style>
และยืมของคุณmy_snackbar_background
จากrepo อย่างเป็นทางการด้วยวิธีนี้:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="4dp"/>
<solid android:color="@color/mySnackbarBackgroundColor"/>
</shape>
นี่คือrepo สนามเด็กเล่น