Android Material Design 系列之 Snackbar 使用详解

前言

本文是 Material Design 系列第二篇:SnackBar 的提出实际上介于 Toast 和 Dialog 的中间产物,SnackBar 提供有关操作的轻量级反馈,它们在移动设备的屏幕底部显示一条简短消息。SnackBar 出现在屏幕上所有其他元素的上方,一次只能显示一个。

它们在超时后或在屏幕上其他位置的用户交互之后自动消失,特别是在召唤新的表面或活动的交互之后。

Snackbar 与 Toast 的主要区别是:Snackbar 可以滑动退出,也可以处理用户交互(点击)事件。

一、SnackBar 特征

  • Snackbar 会在超时或者用户在屏幕其他地方触摸之后自动消失
  • 可以在屏幕上滑动关闭
  • 出现时不会阻碍用户在屏幕上的输入
  • 屏幕上同时最多只能显示一个 Snackbar
  • 可以在 Snackbar 中添加一个按钮,处理用户点击事件
  • Snackbar 一般需要 CoordinatorLayout 来作为父容器,CoordinatorLayout 保证 Snackbar 可以右滑退出

二、SnackBar 方法介绍

以下整理 SnackBar 常用的 API 方法:

方法 介绍
make(View view, CharSequence text, int duration) 创建 SnackBar 以显示消息
setAction(int resId, View.OnClickListener listener) 设置要在此显示的动作
setActionTextColor(ColorStateList colors) 设置指定操作的文本颜色
setBackgroundTint(int color) 设置背景 Drawable 的色调颜色
setCallback(Snackbar.Callback callback) 添加回调方法
show() 显示 SnackBar
dismiss() 隐藏 Snackbar
getContext() 获取父布局所使用的 Context
isShown() 判断当前 Snackbar 是否正在显示
isShownOrQueued() 判断当前 Snackbar 是否正在显示或者已经添加到队列里
setDuration(int duration) 设置消失时间
getView() Snackbar 所对应的 SnackbarBaseLayout,自定义 Sanckbar 时需要使用

三、SnackBar 使用

Snackbar 基本上继承了和 Toast 一样的方法和属性,例如 LENGTH_LONG 和 LENGTH_SHORT 用于设置显示时长。

1、基础使用

Snackbar.make(view, message, duration).show();

参数:

  • view:Snacker 要设置一个 View,Snacker 就显示在该 View 上面

  • message:Snacker 左边显示是文字内容

  • duration:Snacker 显示的时间,

    • Snackbar.LENGTH_SHORT// 短时间显示,然后自动取消
    • Snackbar.LENGTH_LONG// 长时间显示,然后自动取消
    • Snackbar.LENGTH_INDEFINITE// 不消失显示,除非手动取消
  • show():最后 Snaker 要加上这个才会显示

Snackbar.make(view, "提示:您有新消息", Snackbar.LENGTH_SHORT).show();

2、设置 SnackBar 文本颜色和背景颜色

Snackbar 的官方 API 只提供了 setActionTextColor()这个方法修改 Action 的文字颜色。在源码中我们看到 Snackbar 中定义了一个继承自 LinearLayout 的内部类 SnackbarLayout,

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值