Android 中的自定义 Snackbar

article/2025/9/18 17:13:52

前言

Snackbars 在 Android 应用程序中很常见。几乎每个应用程序都使用 Snackbars 来显示有关应用程序中正在发生的事情的一些信息。您可以将 Snackbar 视为 Android 中 Toasts 的替代品或更好的版本。

默认情况下,Snackbar 显示在屏幕底部,它出现在屏幕上所有元素的顶部。它与某些视图相关联,并且仅当视图在屏幕上时才会显示 Snackbar。

所以,总的来说,我们可以说 Snackbars 很棒。但是为了将这种令人敬畏的感觉提升到一个新的水平,我们可以根据我们的需要自定义 Snackbar。在本博客中,我们将学习如何在 Android 中制作自定义 Snackbar。所以,让我们开始使用普通的 Snackbar。

使用普通 Snackbar

要在您的应用程序中使用 Snackbar,您需要做的就是在您的应用程序中拥有 Material Design 依赖项。build.gradle因此,在您的文件中添加以下依赖项:

implementation "com.google.android.material:$latest_version"

然后你可以像 Toast 一样使用 Snackbar。例如:

Snackbar.make(view, "Show some message here", Snackbar.LENGTH_SHORT).show()

上面的代码将在 Snackbar 中显示一条简单的消息。Snackbar 提供了一些功能。例如:

  • setAction():这可用于对 Snackbar 进行一些操作。例如,您可以使用 Snackbar 来显示网络错误消息并执行名为 Retry 的操作。
  • setBackgroundColor():这可以用来改变 Snackbar 的背景颜色。
  • setAnchorView():默认情况下,Snackbar 出现在屏幕底部。setAnchorView但是你可以在函数的帮助下改变它的位置。

还有其他功能可以与 Snackbar 一起使用。

定制Snackbar

现在,是时候创建我们自己的 Snackbar 了。

所以,我们要做的第一件事就是为 Snackbar 创建一个自定义布局。因此,为此,我们需要创建一些文件。创建两个名为CustomSnackbar和的类CustomSnackbarView。创建两个名为item_custom_snackbar和的 XML 文件layout_custom_snackbar

item_custom_snackbar包含 Snackbar 的元素。在这里,我们将在 Snackbar 中拥有一个文本视图和一个图像视图。您可以根据需要更改 UI。因此,将的代码item_custom_snackbar是:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="60dp"><ImageViewandroid:id="@+id/ivCheck"android:layout_width="60dp"android:layout_height="match_parent"android:src="@drawable/ic_check_circle"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/tvMessage"android:layout_width="0dp"android:layout_height="match_parent"android:gravity="center_vertical"android:padding="8dp"android:text="Payment Successful!"android:textSize="30sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@+id/ivCheck"app:layout_constraintStart_toStartOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

现在,要创建自定义 Snackbar 视图,您需要实现ContentViewCallback。这用于告诉 Snackbar 的内容何时开始出现以及何时从屏幕上消失。因此,将的代码CustomSnackbarView是:

class CustomSnackbarView @JvmOverloads constructor(context: Context,attributeSet: AttributeSet? = null,defaultStyle: Int = 0
) : ConstraintLayout(context, attributeSet, defaultStyle), ContentViewCallback {init {View.inflate(context, R.layout.item_custom_snackbar, this)}override fun animateContentIn(delay: Int, duration: Int) {// TODO("Use some animation")}override fun animateContentOut(delay: Int, duration: Int) {// TODO("Use some animation")}}

在这里,我们有两个函数叫做animateContentInanimateContentOut,它们用于在 Snackbar 的内容出现和从屏幕上消失时有一些动画。

现在,我们的自定义视图已准备就绪,我们可以在任何布局文件中使用此视图。所以,我们将在我们的layout_custom_snackbar 相同的代码将是:

<?xml version="1.0" encoding="utf-8"?>
<com.example.snackbarexample.CustomSnackbarView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" />

最后,CustomSnackbar遗嘱的代码是:

class CustomSnackbar(parent: ViewGroup,content: CustomSnackbarView
) : BaseTransientBottomBar<CustomSnackbar>(parent, content, content) {init {getView().setBackgroundColor(ContextCompat.getColor(view.context,android.R.color.transparent))getView().setPadding(0, 0, 0, 0)}companion object {fun make(viewGroup: ViewGroup): CustomSnackbar {val customView = LayoutInflater.from(viewGroup.context).inflate(R.layout.layout_custom_snackbar,viewGroup,false) as CustomSnackbarViewcustomView.tvMessage.text = "Some Custom Message"return CustomSnackbar(viewGroup, customView)}}}

在这里,您可以在代码本身中自定义 Snackbar 的内容,即您可以更改文本消息,也可以更改图像。默认情况下,Snackbar 的背景为灰色。因此,在init区块中,我们已将其设为透明。

现在,您可以通过调用make方法(通过传递父视图组)来使用这个类,就像普通的 Snackbar 一样。例如,您可以通过以下方式调用此类:

CustomSnackbar.make(window.decorView.rootView as ViewGroup).show()

这就像调用一个普通的 Snackbar 一样简单。这是您使用上述代码时得到的结果:

这样你可以通过这种方式,制作自己的自定义 Snackbar。


http://chatgpt.dhexx.cn/article/BPnL2xly.shtml

相关文章

Snackbar的使用

最近看到Material Design中的Snackbar&#xff0c;跟Toast很相似。似乎效果比原生的Toast好写(当然我们也可以自定义Toast成Snackbar的效果)&#xff0c;至于Snackbar特别深入的定制目前了解甚少&#xff0c;所以这里简单记录一下常用的。 效果图 下面看一下效果 这里面加了个…

Android Snackbar控件

1. Snackbar类 Snackbar是5.0版本出现的控件&#xff0c;类似于Toast&#xff0c;显示在屏幕的底部&#xff0c;包含文字信息与一个可选的操作按钮。需要添加Design依赖库&#xff0c;并且使用Theme.AppCompat主题。 2. 创建Snackbar类 Snackbar利用静态方法make()来创建实…

Android Snackbar简单解析

偶然间发现android中有Snackbar类&#xff0c;还是有点意思&#xff0c;类似于toast。与toast相比&#xff0c;最明显的区别是:Snackbar只能在屏幕底部显示。其他用法基本与toast相似。 先来张效果图吧&#xff0c;静态图&#xff1a; 大概的用法呢&#xff1f;&#xff1a; S…

android Snackbar新控件解析

Dialog和Toast&#xff0c;我们在日常的开发中一定非常熟悉&#xff0c;常常被用来作为Android应用内提示性信息的两种展示方式。然而Google在Design包中又提供了一种新的选择&#xff0c;那就是Snackbar。今天主要介绍Snackbar新控件的使用&#xff0c;以及三种提示信息展示方…

android开发之SnackBar的使用

SnackBar是一个类似于Toast的东西&#xff0c;它也有显示时长&#xff0c;但是比Toast更加灵活&#xff0c;同时&#xff0c;我们还可以给SnackBar设置点击事件&#xff0c;那么我们今天就来看看怎么用吧&#xff01; 先来一张效果图&#xff1a; 这种效果大家可能在一些App中…

Snackbar-Android M新控件

概述 查看官方API Snackbar 是 Android design support library 中的另一个组件。使用 Snackbar&#xff0c;可以在屏幕底部快速的显示一条消息&#xff0c;大体与 Toast 相同&#xff0c;但多了几分灵活性&#xff1a; 一小段时间之后、或者用户与屏幕触发交互&#xff0c;S…

Android Snackbar使用方法及小技巧-design

Snackbar和Toast相似&#xff0c;都是为了给用户提供交互信息&#xff0c;Snackbar是固定在底部的&#xff0c;显示时从下往上滑出 要使用Snackbar&#xff0c;需要在项目的build.gradle中添加依赖 dependencies {compile com.android.support:design:23.4.0 } Snackbar的使用…

Android 快别用Toast了,来试试Snackbar

&#x1f525; 应用场景 Toast提示默认显示在界面底部&#xff0c;使用Toast.setGravity()将提示显示在中间&#xff0c;如下&#xff1a; Toast toast Toast.makeText(this, str, Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();运行在在Android …

Android---简易Snackbar

目录 Snackbar 简介 Snackbar 特性 完整Demo Snackbar 简介 Snackbar 是 Android5.0 新特性---Material Design 中的一个控件&#xff0c;用来代替 Toast。Snackbar 就是一个类似 Toast 的快速弹出消息提示的控件&#xff0c;手机上显示在底部&#xff0c;大屏幕设备显示在左…

Android Snackbar基本使用

概述 Snackbar 是 Android 5.0 新特性——Material Design 中的一个控件&#xff0c;用来代替 Toast &#xff0c;Snackbar与Toast的主要区别是&#xff1a;Snackbar可以滑动退出&#xff0c;也可以处理用户交互&#xff08;点击&#xff09;事件。 样式 使用 Snackbar需要配…

Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?

转载请注明出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/51336415 本文同步发表于我的微信公众号&#xff0c;扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注&#xff0c;每天都有文章更新。 今天给大家带来一篇简单易懂的微技巧文章&#xff0c;并没…

Android开发——Snackbar使用详解

Snackbar是Android支持库中用于显示简单消息并且提供和用户的一个简单操作的一种弹出式提醒。当使用Snackbar时&#xff0c;提示会出现在消息最底部&#xff0c;通常含有一段信息和一个可点击的按钮。下图是Gmail中删除一封邮件时弹出的Snackbar&#xff1a; 在上图中&#xf…

Android Snackbar的使用

在项目中肯定有不少地方用到Toast&#xff0c;但是在项目各种各样的需求上&#xff0c;Toast已经不能满足我们的需求了。 其实google在Android 5.0的时候就推出了Snackbar&#xff0c;它算是Toast的一个进阶控件。 它是Material Design中的一个控件&#xff0c;与Toast的最大区…

Snackbar的使用和顶部Snackbar实现

下载链接&#xff1a;Snackbar顶部显示 也可以module的形式直接导入使用 &#xff1a;module导入教程 谷歌在android 5.0 发布后&#xff0c;随后公布了design库和设计理念&#xff08;需翻墙&#xff09;&#xff0c;意图在于规范安卓app的风格&#xff0c;类似而不仅仅ios的…

SnackBar 简单使用

1.简介 Snackbar是Android Support Design Library库中的一个控件&#xff0c;可以在屏幕底部快速弹出消息&#xff0c;比Toast更加好用.可以添加点击行为。多用于结合协调布局使用&#xff08;CoordinatorLayout&#xff09;。 implementation com.android.support:design:28…

MaterialDesign之Snackbar学习笔记

近期实在太忙了&#xff0c;看到好的文章先转载&#xff0c;后续自己慢慢消化吧&#xff01; 转载 http://www.jianshu.com/p/cd1e80e64311#rd 没时间解释了&#xff0c;快使用Snackbar!——Android Snackbar花式使用指南 字数2405 阅读1628 评论4 喜欢54 本文是在《Design…

Snackbar使用详解

Snackbar Snackbar是Android Support Design Library库中的一个控件&#xff0c;可以在屏幕底部快速弹出消息&#xff0c;比Toast更加好用。 开发出一个好的产品&#xff0c;友好的交互是不可缺少的&#xff0c;通常给用户提示信息的方式有三种&#xff1a;Dialog、Toast、Sn…

Snackbar使用详解及其相关框架TSnackbar

简述&#xff1a; Snackbar 是 Android design support library 中的一个组件&#xff0c;它的作用和Toast类似&#xff0c;显示吐司&#xff0c;但Snackbar的特别之处在于Snackbar显示的提示信息可以和用户交互&#xff0c;更好地获取用户反馈信息。同时&#xff0c;它显示的吐…

HAWQ:基于 Hessian 的混合精度神经网络量化

HAWQ&#xff1a;基于 Hessian 的混合精度神经网络量化 摘要动机方法海森方法的有效性分析海森矩阵方法推导根据幂迭代求海森矩阵的最大特征值根据海森矩阵最大特征值确定量化精度与顺序 实验结果ResNet20 On CIFAR-10ResNet50 on ImageNetSqueezeNext on ImageNetInception-V3…

HAWQ技术解析(二) —— 安装部署

一、安装规划1. 选择安装介质 HAWQ的安装介质有两种选择&#xff0c;一是下载源码手工编译&#xff0c;二是使用Pivotal公司提供的HDB安装包。源码的下载地址为 http://apache.org/dyn/closer.cgi/incubator/hawq/2.0.0.0-incubating/apache-hawq-src-2.0.0.0-incubating.tar.…