他のどの回答もカスタムスタイルオーバーライドを提供しなかったので(私はそれを行うための最も安全な更新方法の1つと考えています)、ここに私の解決策を投稿します。
新しい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にレガシースナックバーを使用することを決定するとMySnackbarStyle
、res / values-21 /フォルダーにabouve を設定し、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>
ここに遊び場のリポジトリがあります。