前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 关于 Snackbar 基本使用

Android 关于 Snackbar 基本使用

作者头像
用户8928967
发布2023-02-28 15:39:42
2.2K0
发布2023-02-28 15:39:42
举报
文章被收录于专栏:用户8928967的专栏

Snackbar 呢,是 Android 官方的一个控件,它可以说跟 Toast 类似,在应用交互中给用户以友好提示的控件。

它通常出现屏幕底部,给予用户简短的提示消息。它出现在屏幕所有元素之上,且一次只显示一个。

它相对 Toast 还有个很大的不同点,它能提供相关操作的轻量反馈,也就是说它可以点击,通过 setAction 方法去设置相关响应动作。

总之,这个控件呢,在项目中还挺实用的,开始实践一下吧。

一、Snackbar 基本使用
  • 先在app build.gradle 中添加依赖:
代码语言:javascript
复制
implementation "com.google.android.material:$latest_version" 
  • 然后在代码中使用(简单使用跟Toast是类似的):
代码语言:javascript
复制
 Snackbar.make(binding.root, "This is a snackbar message", Snackbar.LENGTH_SHORT).show()

这里随机在一个按钮点击时间里面调用,点击了按钮会在屏幕底部弹出:

snackbar

它也可以设置显示时间,点到源码可以看到,duration 有三种:

duration

还有个可选是不定,那意思就是,可以自定义喽。666~

二、给 Snackbar 添加点花样

上述只是最最最简单的使用 Snackbar,如果只是弹出提示,那显然 Toast 已经够了,它肯定是提供了 Toast 不具备的功能的,接下来开始实践一下吧。

setAction(): 设置Snackbar右侧按钮,增加进行交互事件。

代码语言:javascript
复制
Snackbar.make(binding.root, "Show some message here", Snackbar.LENGTH_SHORT).setAction(
                "Action"
            ) { Toast.makeText(this@CallBoardActivity, "您点击了 Snackbar 的 Action", Toast.LENGTH_LONG).show() }.show()

setAction1

setAction2

setBackgroundTint(): 给 Snackbar 设置背景颜色

setActionTextColor(): 给 Snackbar Action 文字设置颜色

setTextColor(): 给 Snackbar 文字设置颜色

代码语言:javascript
复制
Snackbar.make(binding.root, "Show some message here", Snackbar.LENGTH_SHORT)
                .setBackgroundTint(ContextCompat.getColor(this, R.color.baseCyan))
                .setActionTextColor(ContextCompat.getColor(this, R.color.white))
                .setTextColor(ContextCompat.getColor(this,R.color.black))
                .setAction(
                "Action"
            ) { Toast.makeText(this@CallBoardActivity, "您点击了 Snackbar 的 Action", Toast.LENGTH_LONG).show() }
                .show()

运行:

addCallback(): 给 snackbar 添加了个回调,回调 Snackbar 弹出和关闭动作。有需求可以添加一下,做个演示。

代码语言:javascript
复制
Snackbar.make(binding.root, "Show some message here", Snackbar.LENGTH_SHORT).addCallback(object : Callback(){
                override fun onShown(sb: Snackbar?) {
                    super.onShown(sb)
                    Log.d("yyyyy", "onShown")
                }

                override fun onDismissed(transientBottomBar: Snackbar?, event: Int) {
                    super.onDismissed(transientBottomBar, event)
                    Log.d("yyyyy", "onDismissed")
                }
            }).show()

log

从日志的打印结果还可以看出,给 snackbar 的 duration 设置成 LENGTH_SHORT,它的显示时间大概是 3 秒。啧啧啧~

当然,官方还提供了一些方法,给 Snackbar 设置那么点花样,具体还是看需求吧,它能提供的方法也不很多,更为复杂点大概还是需要自定义,下一期再来研究下自定义 Snackbar 吧。

Snackbar Material Design 规范:

https://m2.material.io/components/snackbars

我们在设计之初也应该参考下它的规范,避免一些不恰当设计使用。

Snackbar类:

https://developer.android.com/reference/com/google/android/material/snackbar/Snackbar

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 妮K妮K妮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Snackbar 基本使用
  • 二、给 Snackbar 添加点花样
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档