我想给我的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组件