Благодаря shadowsheep я написал эти стили с помощью Material Components
. Я также удалил поля. Вы можете скомпилировать его приложение для исследования Snackbar
.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- Snackbar -->
<item name="snackbarStyle">@style/MaterialSnackbarTheme</item>
<item name="snackbarButtonStyle">@style/MaterialSnackbarTextButtonTheme</item>
<item name="snackbarTextViewStyle">@style/MaterialSnackbarTextViewTheme</item>
</style>
<style name="MaterialSnackbarTheme" parent="@style/Widget.MaterialComponents.Snackbar">
<!-- <item name="backgroundTint">#00cc77</item>-->
<!-- <item name="android:background">@drawable/snackbar_background</item>-->
<item name="android:background">#00cc77</item>
<item name="cornerRadius">0dp</item>
<item name="android:layout_margin">0dp</item>
<item name="actionTextColorAlpha">1.0</item>
</style>
<style name="MaterialSnackbarTextButtonTheme" parent="@style/Widget.MaterialComponents.Button.TextButton.Snackbar">
<item name="backgroundTint">#7777ff</item>
<item name="android:textColor">#ffffff</item>
</style>
<style name="MaterialSnackbarTextViewTheme" parent="@style/Widget.MaterialComponents.Snackbar.TextView">
<item name="android:textColor">#ffffff</item>
<item name="android:alpha">1.0</item>
</style>
Где drawable / snackbar_background.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid android:color="#00cc77" />
</shape>
Не забудьте удалить из Snackbar.make()
, если вы добавили:
view.setBackgroundColor(ContextCompat.getColor(context, R.color.bg_color))
setActionTextColor(ContextCompat.getColor(context, R.color.button_color))
В отличие от AlertDialog
, Snackbar
содержит настройки snackbarButtonStyle
и snackbarTextViewStyle
внутри AppTheme
(что странно, потому что вчера они хорошо работали внутри MaterialSnackbarTheme
).
Как сказал @StayCool в комментариях, Snackbar
в настоящее время использует прозрачность для фона и цвета текста (альфа = 0,5 - 0,6). Также добавили закругленные углы и поля. Чтобы удалить прозрачность фона, используйте <item name="actionTextColorAlpha">1.0</item>
или drawable / snackbar_background.xml. Вы можете увидеть его вариант.
25.05.2020