Snackbar使用介绍及自定义


前言

有个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.CENTER
        snackBarView.layoutParams = params
        snackBarView .setBackgroundResource(R.drawable.shape_snake_night)

        //文字居中
        val message: TextView = snackBarView.findViewById(R.id.snackbar_text)
        //View.setTextAlignment需要SDK>=17
        message.textAlignment = View.TEXT_ALIGNMENT_GRAVITY
        message.gravity = Gravity.CENTER
        message.maxLines = 1
        message.textSize = 40f
        message.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。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我怀里的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值