Android-Snackbar vs Toast-用法和区别


103

到目前为止,我们仅在应用程序中使用Toasts,并且由于我们计划采用Support Design Library中的一些新功能,我想知道Snackbar vs. Toast的推荐用法是什么。

我一直在阅读Google的快餐栏文档。

小吃栏在移动设备屏幕底部和桌面左下方的小弹出窗口中提供有关操作的轻量级反馈。它们首先位于屏幕上的所有元素,包括FAB。

和烤面包。

Android还提供了一个胶囊状的吐司,主要用于系统消息传递。吐司类似于小吃店,但不包含动作,也不能在屏幕外滑动。

我知道他们在做什么,但是我什么时候使用它有点困惑。这是否意味着:

  • 如果不需要用户交互,我会敬酒吗?
  • “系统消息传递”是什么意思?当我的应用程序与Android系统之间发生重要事件时,这是否适用于显示信息?
  • 我喜欢的是屏幕外滑动功能-这是否就是开始用小吃店代替吐司的原因?(尽管这是一个基于意见的问题)

此链接不再起作用。也许应该使用material.io/guidelines/components/snackbars-toasts.html吗?
Vadim Kotov

Answers:


109

如果不需要用户交互,我会敬酒吗?

您仍然可以使用Snackbar。对Snackbar进行操作不是强制性的。

“系统消息传递”是什么意思?当我的应用程序与Android系统之间发生重要事件时,这是否适用于显示信息?

我相信这意味着如果有一些与系统有关的消息,将使用Toasts。整个Android或您可能正在运行的某些后台服务。例如Text-To-Speech is not installed.ORNo Email client found.

我喜欢的是屏幕外滑动功能-这是否就是开始用Snackbar代替烤面包的原因?(尽管这是一个基于意见的问题)

这是原因之一。但是还有其他几点。例如:即使活动结束,您的吐司面包仍会显示在屏幕上。小吃吧没有。如果在退出应用程序后很长时间没有弹出(或在顺序创建多个Toast的情况下继续弹出)Toast,则不会造成混乱。Snackbar不会发生这种情况。

不止于此:我建议如果您在想,应该切换。SnackBars看起来比Toasts好得多。


18
干杯,只有当您参加活动时,Snackbar才能活着这一点非常有用。
雅各布·霍洛夫斯基

9
我还要补充说,除了系统消息之外,Toasts对于整个引用应用程序的消息也是首选的,而Snackbars对于引用当前活动的消息是首选的。例如,如果您的应用在启动时检查更新,则最好对结果消息使用吐司。如果您的应用包含可以删除的项目,则首选将已删除的响应消息显示为带有撤消按钮的小吃栏。
斯巴鲁Tashiro

10
要注意的另一件事是,在关闭通知时不显示吐司。
Horatio

同样重要的区别是,与Toast不同,在任何时候都只显示一个 Snackbar-您可以在彼此之上显示多个Toast,这对于用户来说可能很烦人,尤其是考虑到它们不能被删除的事实。刷卡
菲岑

47

我想在吐司和小吃店之间添加一个小的比较。我认为,如果您要提出警告或需要用户交互/确认的信息,则应使用小吃店。如果仅是一条信息消息,不需要任何用户确认,则可以使用Toast。

+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+
| # |                                Toast                                 |                                 Snackbar                                 |
+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+
| 1 | Cant be dismissed by swiping                                        | Can dismiss by swiping                                                   |
| 2 | Activity not required (Can show in android home or above other apps) | Can show inside an activity of your app                                  |
| 3 | Cant handle user input                                              | Can handle user input                                                    |
| 4 | Good for showing info messages to user                               | Good for showing warning/info type messages to user that needs attention |
+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+

26

吐司:

  1. 在API级别1中添加了Toast
  2. 基本上不需要活动(可以在Android home或什至在其他应用之上显示)
  3. 它无法根据用户输入执行操作
  4. 刷卡无法消除
  5. 它无法处理用户输入,如“滑动”,“点击”等。
  6. 适合向用户显示信息消息

小吃店:

  1. 在API级别23中添加了SnackBar
  2. 可以在应用程序的活动中显示它
  3. 它可以执行一个动作
  4. 可以通过刷卡消除
  5. 它可以处理用户输入
  6. 适用于向需要注意的用户显示警告/信息类型消息

SnackBar和Toast的用法:

小吃店:

SnackBar可以用于需要显示简单弹出消息以及执行操作选项的区域。例如:在GMail应用程序中,当您删除邮件时,快速SnackBar显示在底部,消息“ 1 Deleted”带有操作按钮“ Undo”。按下“撤消”操作按钮后,将恢复已删除的邮件。

吐司:

吐司可用于需要显示系统消息的区域。

例如:

当您的应用尝试从远程服务器下载JSON,但由于服务器超时或找不到资源而失败时,您只需要显示错误消息,提示“发生错误”。但是请理解,刷卡不能消除Toast消息。如果您仍然希望能够在应用程序中将其关闭,请使用SnackBar。


13

根据弹出消息概述中的官方文档:

注: 小吃吧类取代版本吐司。尽管目前仍支持Toast,但Snackbar现在是向用户显示简短的临时消息的首选方法。

和(材料设计)Snackbars的文档:

相关概念: Android还为Toast类提供了类似的API,可用于显示系统级通知。通常,小吃店是向用户显示反馈消息的首选机制,因为它们可以在发生操作的UI上下文中显示。如果无法做到,请保留吐司


2

Google的Material Design Specification材料设计规范)说,没有任何动作就可以创建Snackbar。他们提供了一个Snackbar如果仅显示一个String的外观的示例。我假设“系统消息传递”意味着设备事件(例如网络连接丢失)-而存档电子邮件是Gmail特定的操作。

为了保持一致性,选择Toast或Snackbar并将其应用于整个应用程序是有意义的。



1

简短的答案是,这是两种在后台与用户进行交流的方式,您可以使用其中一种,这两种方法都很好。只要确保您使用的是同一台设备,并且不要在它们之间来回切换即可。

长答案:

  • 不,这意味着如果您需要采取某些措施,则必须使用Snackbar。您仍然只能将Snackbar用于消息(例如“上传完成”)。
  • “系统”不仅仅意味着Android系统。例如-如果从您的服务器获取信息时遇到json解析问题,您仍然可以使用Toast来让用户在与服务器通信时出现问题。
  • 如果您确实需要将其清除,那绝对是选择Snackbar的原因

1

我们的设计团队正在考虑同时使用吐司或小吃店。我们得出的结论是,鉴于应用程序的灵活性,该应用程序应使用小吃栏。

仅当我们需要在不同屏幕上仍然有意义的持久性短字符串信息消息时,才应使用吐司。


1

Toast和Snackbar Android之间的区别

  • 可以自定义Toast消息并在屏幕上的任何位置打印,但Snackbar只能显示在屏幕底部。
  • Toast消息没有操作按钮,但是Snackbar可能有操作按钮。
  • 在时间限制完成之前,不能关闭Toast消息,但是可以在时间限制之前关闭Snackbar。
  • 您可以使用这三个不同的值设置显示消息的时间。
    Snackbar.LENGTH_LONG
    Snackbar.LENGTH_SHORT
    Snackbar.LENGTH_INDEFINITE

用法

吐司

Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

小吃店

Snackbar snackbar = Snackbar.make(view,"This is Simple Snackbar",Snackbar.LENGTH_SHORT);
snackbar.show();

0

Android还提供了一个胶囊状的吐司,主要用于系统消息传递。

我认为在“系统消息传递”中,它们还指的是以下事实:即使用户在各个活动之间导航并且即使该应用程序已移至后台,也只能在特定时间显示祝酒词。

我认为,将快餐盒的范围限制为一项活动并能够将其消除是一个优势。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.