如何设置零食栏的边距



我想给我的SnackBar添加底部,左侧和右侧的边距,但是我无法获得它。

这就是我所尝试的:

var snackBar = Snackbar.make(binding.root,msg,Snackbar.LENGHT_LONG)
var snackbarLayout = snackBar.view. as Snackbar.SnackbarLayout
var layoutParams = snackbarLayout.layoutParams as CoordinatorLayout.LayoutParams
layoutParams.setMargins(32,0,32,32)
snackbarLayout.layoutParams = layoutParams
snackBar.show()

我在snackbarLayout中得到一个错误。layoutParams和this:

SnackbarBaseLayout。setLayoutParams只能在同一个库组中调用

我不知道如何解决这个错误,或者是否有其他方法来设置这个小工具栏的页边距。任何想法?

您可以这样尝试,而不需要将类强制转换为Snackbar.SnackbarLayout

private fun makeSnackbar(message: String) {
val snackbar = Snackbar.make(binding.root, message ,Snackbar.LENGHT_LONG)
// assuming the parent / root is CoordinatorLayout
val viewParams = snackbar.view.layoutParams as CoordinatorLayout.LayoutParams
viewParams.setMargins(...)
snackbar.view.layoutParams = viewParams
snackbar.show()
}

为Snackbar添加边距很简单,你需要为Snackbar创建一个样式,并将该样式添加到你的应用程序主题中。这里有一个相同的例子!

为Snackbar创建新样式

<style name="SnackBarStyleName" parent="Widget.MaterialComponents.Snackbar">
<item name="android:layout_margin">32dp</item>
</style>

添加到你的应用程序主题,看起来像这样,

<style name="Theme.DemoCompactCalendar" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="snackbarStyle">@style/SnackBarStyleName</item>
</style>

就完成了!

注意:如果你的应用主题是一个材料主题,那么使用材料组件,否则使用appCompact组件

相关内容

最新更新