当前位置: 首页 > news >正文

Snackbar

1.简介

位于底部的提示View
支持侧滑消失
同一时间只有一个
不支持跨Activity展示
国内使用率很低

2.基础使用

2.1 基本展示
Snackbar.make(view, "Content", Snackbar.LENGTH_LONG).show()
2.2 设置点击事件

注意不设置点击事件回调,点击按钮的文字不会展示出来

.setAction("click") {Log.d("TAG", "click")}
2.3 调整显示位置

会在设置的 View 上方展示

 .setAnchorView(R.id.flb_main)

如果不设置 AnchorView ,默认都是在底部展示的,那么有方法展示在中间么?

private static ViewGroup findSuitableParent(View view) {ViewGroup fallback = null;do {if (view instanceof CoordinatorLayout) {// We've found a CoordinatorLayout, use itreturn (ViewGroup) view;} else if (view instanceof FrameLayout) {if (view.getId() == android.R.id.content) {// If we've hit the decor content view, then we didn't find a CoL in the// hierarchy, so use it.return (ViewGroup) view;} else {// It's not the content view but we'll use it as our fallbackfallback = (ViewGroup) view;}}if (view != null) {// Else, we will loop and crawl up the view hierarchy and try to find a parentfinal ViewParent parent = view.getParent();view = parent instanceof View ? (View) parent : null;}} while (view != null);// If we reach here then we didn't find a CoL or a suitable content view so we'll fallbackreturn fallback;}

源码中会根据设置的view去找到最近的一个CoordinatorLayout,如果找不到就去找
FrameLayout 用来备用,直到找到顶层的 id 为 android.R.id.content 的 Fragment,
所以如果在布局中加入一个 CoordinatorLayout 完全可以让Snackbar展示在中间。

2.5 调整展示时间
  //下一个Snackbar出现,或者调用dismiss会消失public static final int LENGTH_INDEFINITE = -2;//短时间 1500 实际消失时间还会加上动画消失时间public static final int LENGTH_SHORT = -1;//长时间 2750 实际消失时间还会加上动画消失时间public static final int LENGTH_LONG = 0;//SnackbarManagerprivate static final int SHORT_DURATION_MS = 1500;private static final int LONG_DURATION_MS = 2750;
2.6 调整颜色
//背景颜色
.setBackgroundTint()
//点击按钮颜色
.setActionTextColor()
//文字颜色
.setTextColor()
2.7 监听消失事件
.addCallback(object: BaseCallback<Snackbar>() {})
2.8 文字超过了会如何展示呢?

内容最多2行,超过会省略
按钮文字没有限制行数,短字数的情况下和内容在一行展示,多了会显示在内容下方。
如果想click展示完全可以扩大显示宽度

 .setMaxInlineActionWidth(100)

总结

使用还是比较少的,常见于 Android 项目的 Demo

http://www.lryc.cn/news/40345.html

相关文章:

  • HummerRisk 使用教程:主机检测
  • 【Arduino无线气象站项目】
  • HTTP详解
  • cpufreq--处理器功耗控制
  • 做技术,最忌讳东张西望
  • Oracle 常见报错问题汇总
  • 单片机连接有人云上传数据
  • 系统集成项目管理工程师:第18章项目风险管理学习笔记
  • 【笔试强训选择题】Day3.习题(错题)解析
  • 基于GPT-4的免费代码生成工具
  • Android开发的这一年里,Jetpack的Room源码是怎么狠狠奖励我的?
  • 推荐一款卸载软件的小工具-《UninstallToo》
  • 线程池——JUC随记8
  • SpringCloudAlibaba微服务调用组件-Feign
  • 高效学习方法论
  • C语言结构体(一篇学会)
  • 嵌入式软件开发之Linux下C编程
  • 普通Java工程师 VS 优秀架构师
  • Java:SpringBoot实现ApplicationEvent事件的监听和发布
  • 星戈瑞-Sulfo-Cyanine3 azide?磺酸基-Cy3-N3叠氮基水溶性染料
  • 十大经典排序算法(下)
  • 网络协议分析期末复习(四)
  • Matlab对图像和视频的简单处理(图像视频文件读取和输出,转灰度图,取指定帧的图像)
  • ArrayList源码分析
  • SpringBoot IOC、DI、@Autowired、@Resource、作用域
  • 链表相关oj题
  • 【Linux】操作系统(Operator System)
  • 机器学习自学笔记——感知机
  • C++ Primer第五版_第三章习题答案(21~30)
  • colmap+openmvs进行三维重建流程全记录