企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 1. 前言 这里介绍的也就是`Snackbar`,它允许在提示中加入一个可交互按钮,当用户点击按钮的时候,可以执行一些额外的逻辑操作。它和`Toast`是基本相似的,只不过可以额外增加一个按钮的点击事件。 # 2. Snackbar的特性 - `Snackbar`会在超时或者用户在屏幕其他地方触摸之后自动消失; - 可以在屏幕上滑动关闭; - 出现时不会阻碍用户在屏幕上的输入; - 屏幕上同时最多只能显示一个`Snackbar`; - 可以在`Snackbar`中添加一个按钮,处理用户点击事件; - `Snackbar`一般需要`CoordinatorLayout`来作为父容器,`CoordinatorLayout`保证`Snackbar`可以右滑退出; # 3. 使用 语法: ~~~java Snackbar.make(view, message, duration) .setAction(action message, click listener) .show(); ~~~ 传入的`view`只要是当前界面布局的任意一个`View`都可以,`Snackbar`会使用这个`View`自动查找最外层的布局,用于展示提示信息。 `setAction()`方法来设置一个动作,从而让`Snackbar`不仅仅是一个提示,而是可以和用户进行交互的。 比如: ~~~ Snackbar.make(tab_note_img, "Message!", Snackbar.LENGTH_LONG) .setAction("Undo", View.OnClickListener { Toast.makeText(this, "Undo Clicked!", Toast.LENGTH_LONG).show() }) .show() ~~~ 效果: ![](https://img.kancloud.cn/7a/a7/7aa70942d49f1261c0408a16e8eceb34_363x84.png) # 3.1 解决遮挡问题 不过这里有一个`bug`,就是它会将我们的悬浮按钮以及底部自定义`Tab`给遮挡住了。有没有什么办法能解决一下呢?当然有了,只需要借助`CoordinatorLayout`就可以轻松解决。