Snackbar使用介绍及自定义

Snackbar使用介绍及自定义

  • 前言
  • 一、Snackbar是什么?
  • 二、简单使用
  • 三、进阶使用
    • 参考 [Android 快别用Toast了,来试试Snackbar](https://blog.csdn.net/g984160547/article/details/121269520)
  • 总结


前言

有个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.CENTERsnackBarView.layoutParams = paramssnackBarView .setBackgroundResource(R.drawable.shape_snake_night)//文字居中val message: TextView = snackBarView.findViewById(R.id.snackbar_text)//View.setTextAlignment需要SDK>=17message.textAlignment = View.TEXT_ALIGNMENT_GRAVITYmessage.gravity = Gravity.CENTERmessage.maxLines = 1message.textSize = 40fmessage.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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/177368.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【k8s】pod进阶

一、资源限制 1、资源限制的概念 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上…

vue3简单写导航anchor示例(支持点击高亮和滚动判断高亮)

1. 点击anchor, 相应的anchorlink高亮 function anchorClick(index) { forceStop.value true; time Date.now(); wheelRef.value.children[index].scrollIntoView({ block: start, behavior: smooth }); // 给一些延时, 再点亮anchor, 同时不再限制scrol…

windows下基于vscode的ssh服务远程连接ubuntu服务器

Ubuntu端配置 1.确保ubuntu端已启用ssh服务 首先,安装ssh服务 sudo apt-get install openssh-server 安装后,打开ssh服务 sudo service ssh start 如果显示有sshd就说明成功了。 判断是否成功打开 ps -e|grep ssh 同时也可以通过如下方式确保ss…

小样本分割的新视角,Learning What Not to Segment【CVPR 2022】

论文地址:Excellent-Paper-For-Daily-Reading/image-segmentation at main 类别:图像分割 时间:2023/11/01 摘要 目前背景:少样本分割 (FSS) 得到了广泛的发展。以前的大多数工作都在努力通过分类任务衍…

Flask 网站装潢, 简易更换模板

Flask 网站装潢,简易更换模板 本博文找个好看的网页模板,并简单改一改变成flask模板,并展示 主博客目录:《从零开始学习搭建量化平台笔记》 文章目录 Flask 网站装潢,简易更换模板下载模板Python 自动生成目录修改目录…

pytorch复现_IOU

定义了一个compute_iou函数,用于计算两个矩形框(boxA和boxB)之间的交并比(IOU,Intersection over Union)。IOU是一种常用的度量,用于评估两个矩形框的重叠程度。 在代码中,函数的输入…

centos关闭Java进程的脚本

centos关闭Java进程的脚本,有时候服务就是个jar包,关闭程序又要找到进程ID,在kill掉,麻烦,这里就写了个脚本 小白教程,一看就会,一做就成。 1.脚本如下 #!/bin/bash ps -ef | grep java | gre…

什么是 CNN? 卷积神经网络? 怎么用 CNN 进行分类?(3)

参考视频:https://www.youtube.com/watch?vE5Z7FQp7AQQ&listPLuhqtP7jdD8CD6rOWy20INGM44kULvrHu 视频7:CNN 的全局架构 卷积层除了做卷积操作外,还要加上 bias ,再经过非线性的函数,这么做的原因是 “scaled p…

《 博弈论教程(罗云峰版) 》——习题二答案

前言 博弈论这门课程,我们主要参考的教材是《博弈论教程(罗云峰版)》,但是罗老师的课后习题并没有给出完整的答案,秉着学习的态度,本人结合教材和 PPT 在这里给出课后习题的答案。 由于我们只学了完全信息…

sw 怎么装新版本

我们在安装solidworks时,有时候会提示A newer version of this applic ation is already installed. Installation stopped.如下图所示 这时候需要点继续安装 然后会出现下图所示情况,vba7.1安装未成功 这是因为我们电脑中以前安装过更高版本的solidw…

安装opensips

1. 安装opensips ubuntu下安装: 1)执行以下的脚本 openSIPS | APT Repository 2)apt-get install opensips 安装完毕后,再选择需要的module继续安装,不需要编译 如果只是用作load balancer,那么只需要…

arcpy.message实现探索

arcpy 位置D:\Program Files\GeoScene\Pro\Resources\ArcPy\arcpy\__init__.py ”““AddMessage(消息) 创建可以使用任何GetMessages函数访问的地理处理信息消息(Severity0)。 message(字符串):要添加的消息。”“ arcpy.geoprocessing D:\Program Files\GeoScene\Pro\Re…

5.4 完整性约束命名子句

思维导图: 笔记&#xff1a;5.4 完整性约束命名子句 定义: 完整性约束是在CREATE TABLE语句中定义的。SQL为CREATE TABLE语句提供了CONSTRAINT子句&#xff0c;用于对完整性约束进行命名。命名的目的是方便增加或删除约束。 基本结构: CONSTRAINT <完整性约束名称> &l…

python实现MC协议(SLMP 3E帧)的TCP服务端(篇一)

python实现MC协议&#xff08;SLMP 3E帧&#xff09;的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样&#xff0c;可以使用现成的pymodbus模块去实现。但是&#xff0c;我们可以根据协议帧进行组包&#xff0c;自己去实现帧的格式&#xff0c;而这一切可以基于socket模…

jdk官网下载(详细步骤)

jdk全部版本下载网址 Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/ 下载之前先建立oracle账号(免费创建)&#xff0c;不用特意去搜&#xff0c;你点击下载jdk的时候会自动弹出来&#xff0c;自己建立一个账号就能下载了 找到自己要下载…

C++数据结构算法篇Ⅰ

C数据结构算法篇Ⅰ &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C算法 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要内容讲解数据结构中的链表结构 文章目录 C数据…

PHP服务器端电商API原理及示例讲解(电商接口开发/接入)

下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发)&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助 相信大家都做过PHP请求电商API接口获取数据&#xff0c;比如淘宝平台商品API接口&#xff0c;订单接口&#xff0c;京东接口&#xff0c;1688接…

Python画图之皮卡丘

Python-turtle画出皮卡丘&#xff08;有趣小游戏&#xff09; 一、效果图二、Python代码 一、效果图 二、Python代码 import turtledef getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensi…

Android广播BroadcastReceiver

BroadcastReceiver组件 BroadcastReceiver是Android中的一个组件&#xff0c;用于接收和处理系统广播或应用内广播。它可以监听系统事件或应用内自定义的广播&#xff0c;并在接收到广播时执行相应的操作。 广播是一种用于在应用组件之间传递消息的机制。通过发送广播&#x…

如何使用查看器筛选、搜索功能进行数据定位?

前言 我们曾探讨过观测云如何通过将内置视图与查看器相联结&#xff0c;实现更全面的数据关联分析。&#xff08;参见《内置视图联动查看器&#xff0c;实现数据关联分析》&#xff09;这里提到的查看器&#xff0c;实际是一个功能全面且强大的数据查看分析工具。其提供多种搜…