다른 답변 중 어느 것도 사용자 정의 스타일 재정의를 제공하지 않았으므로 (가장 안전한 업데이트 방법 중 하나라고 생각합니다) 여기에 내 솔루션을 게시합니다.
나는 이미 새로운 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
에 고해상도 / 값은-21 / 폴더와 이전 남겨 - 유산 - 당신의 스타일을 고해상도 / 값 폴더.
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>
다음은 놀이터 저장소 입니다.