Snackbar使用介绍及自定义
- 前言
- 一、Snackbar是什么?
- 二、简单使用
- 三、进阶使用
- 参考 [Android 快别用Toast了,来试试Snackbar](https://blog.csdn.net/g984160547/article/details/121269520)
- 总结
前言
有个UI要显示自定义样式的toast,并居中,然后我就去看toast的源码,发现toast在新版本不支持一些设置了,并推荐使用Snackbar,于是就有了这篇文章
一、Snackbar是什么?
Snackbar是一种轻量级的通知组件,通常用于在应用程序的底部显示短期的、非持久性的消息或用户反馈。Snackbar可以从底部滑入屏幕,显示一条消息,用户也可以通过点击Snackbar中的按钮来触发相关操作。
右边就是Snackbar的一些相关api
二、简单使用
以下是一个Snackbar示例,它在用户点击一个按钮后显示:
button.setOnClickListener {Snackbar.make(view, "Button clicked", Snackbar.LENGTH_LONG).setAction("Action") {// perform some action}.show()
}
在此示例中,我们使用Snackbar.make()
函数创建一个Snackbar对象。第一个参数是包含Snackbar的视图,第二个参数是要显示的文本消息,第三个参数是Snackbar的持续时间。接下来,我们使用setAction()
方法添加一个动作按钮,该按钮会在用户点击时触发相关操作。最后,我们调用show()
方法将Snackbar显示在屏幕上。
三、进阶使用
可以自定义snackBar的样式:
/*** @param view 自定义布局* @param string 文字* @param length 展示时间* @return : Snackbar* @time 2023/11/1 11:33* @Description: toast for new*/fun showSnakeViewWithMessage(view: View, string: String, length: Int = LENGTH_SHORT) {val snackBar: Snackbar = Snackbar.make(view, string, length)val snackBarView: View = snackBar.view//设置布局居中val params: FrameLayout.LayoutParams = FrameLayout.LayoutParams(snackBarView.layoutParams.width,snackBarView.layoutParams.height)params.gravity = Gravity.CENTERsnackBarView.layoutParams = paramssnackBarView .setBackgroundResource(R.drawable.shape_snake_night)//文字居中val message: TextView = snackBarView.findViewById(R.id.snackbar_text)//View.setTextAlignment需要SDK>=17message.textAlignment = View.TEXT_ALIGNMENT_GRAVITYmessage.gravity = Gravity.CENTERmessage.maxLines = 1message.textSize = 40fmessage.setTextColor(Color.WHITE)snackBar.show()}
调用 Snackbar.make() 方法创建一个 Snackbar,该 Snackbar 的内容为 string 参数指定的文字,展示时间为 length 指定的时间,并指定 Snackbar 显示时所在的视图为 view。
获取 Snackbar 的视图,并按照要求设置视图居中以及更改背景。
获取 Snackbar 视图中的文本内容,将其设置为居中对齐,最大行数设置为 1,字体大小为 40dp,文本颜色为白色。
最后,展示 Snackbar。
参数中的view只是给snackbar预留的展示位置,并不是自定义布局,真正显示可以自定义的是snackBarView
这样就简单的实现了一个类比自定义toast的snackbar,是不是很简单呢?
参考 Android 快别用Toast了,来试试Snackbar
总结
本文介绍了什么是Snackbar以及如何使用这个轻量级的通知组件。在简单使用方面,提供了一个在用户点击按钮后显示Snackbar的示例,同时演示了如何在Snackbar中添加动作按钮。在进阶使用方面,文中详细说明了如何自定义Snackbar的样式,包括居中显示、更改背景和文本样式等。最终,实现了一个类比自定义toast的Snackbar。