感谢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
目前使用透明度作为背景和文本颜色(alpha = 0.5 - 0.6)。他们还添加了圆角和边距。要删除背景透明度,请使用<item name="actionTextColorAlpha">1.0</item>
或 drawable/snackbar_background.xml。你可以看到他的变种。