129

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

我一直在阅读谷歌材料小吃店文档。

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

和敬酒。

Android 还提供了一个胶囊形的 toast,主要用于系统消息传递。Toasts 类似于小吃店,但不包含动作并且不能从屏幕上滑出。

我了解他们的工作,但我有点困惑何时使用什么。是不是意味着:

  • 如果我不需要用户交互,我会使用 toast 吗?
  • “系统消息”是什么意思?当我的应用程序和 Android 系统之间发生重要事情时,这是否适用于显示信息?
  • 我喜欢的是滑动屏幕功能——这会是开始用小吃店代替吐司的理由吗?(虽然这是一个基于意见的问题)
4

9 回答 9

127

如果我不需要用户交互,我会使用 toast 吗?

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

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

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

我喜欢的是滑动屏幕功能——这会是开始用 Snackbar 代替敬酒的理由吗?(虽然这是一个基于意见的问题)

这是原因之一。但还有其他几个优点。例如:即使活动完成,您的 toast 也会保留在屏幕上。小吃店没有。如果在退出应用程序后很久没有弹出 Toast(或者在按顺序创建多个 Toast 的情况下继续弹出),那么混乱就会减少。Snackbar 不会发生这种情况。

最重要的是:我建议如果您正在考虑,您应该切换。SnackBars 看起来比 Toasts 好得多。

于 2015-12-23T09:35:17.367 回答
58

我想在吐司和小吃店之间做一个小比较。在我看来,如果您的意图是提供需要用户交互/确认的警告或信息,您应该使用小吃店。如果它只是一条不需要任何用户确认的信息消息,您可以使用 toast。

# 吐司 小吃店
1 不能通过滑动关闭 可以通过滑动关闭
2 不需要活动(可以在android home或其他应用程序上方显示) 可以在您的应用的活动中显示
3 无法处理用户输入 可以处理用户输入
4 适合向用户显示信息消息 适合向需要注意的用户显示警告/信息类型消息
于 2015-12-24T18:37:01.893 回答
36

吐司:

  1. 在 API 级别 1 中添加了 Toast
  2. 基本上不需要Activity(可以在Android home甚至其他应用程序上方显示)
  3. 它无法根据用户输入执行操作
  4. 不能通过滑动来解除
  5. 它无法处理用户输入,如滑动、点击等。
  6. 适合向用户显示信息消息

小吃店:

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

SnackBar 和 Toast 的用法:

小吃店:

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

吐司:

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

例如:

当您的应用程序尝试从远程服务器下载 JSON 但由于服务器超时或未找到资源而失败时,您只需要显示错误消息“发生错误”。但是请理解 Toast 消息不能通过滑动来消除。如果您仍然想在您的应用程序中关闭它,请选择 SnackBar。

于 2016-03-04T12:02:09.717 回答
18

根据Pop-up messages overview的官方文档:

注意: Snackbar取代了Toast。虽然目前仍支持Toast ,但Snackbar现在是向用户显示简短、短暂消息的首选方式。

和 (Material Design) Snackbars的文档:

相关概念: Android 还提供了一个Toast类,它具有类似的 API,可用于显示系统级通知。通常,snackbars 是向用户显示反馈消息的首选机制,因为它们可以显示在发生操作的 UI 的上下文中。为无法做到这一点的情况保留Toast 。

于 2018-11-14T15:38:52.447 回答
4

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();
于 2020-07-30T11:24:13.030 回答
2

谷歌的材料设计规范说,没有动作就可以有一个 Snackbar。他们提供了 Snackbar 仅显示单个字符串时应该是什么样子的示例。我假设“系统消息”意味着网络连接丢失等设备事件 - 例如,归档电子邮件是 Gmail 特定的操作。

为了一致性起见,选择 Toast 或 Snackbar 并在整个应用程序中应用它是有意义的。

于 2015-12-23T09:35:25.990 回答
1

简短的回答是,这是两种在后台向用户传达信息的方式,您可以使用其中一种方式,它们都很好。只要确保您使用的是同一个而不是在它们之间来回切换。

长答案:

  • 不,这意味着如果你需要一些动作,你必须使用 Snackbar。您仍然可以仅将 Snackbar 用于消息(例如“上传完成”)。
  • “系统”不仅仅指安卓系统。例如 - 如果从服务器获取信息时出现 json 解析问题,您仍然可以使用 toast 让用户在与服务器通信时出现问题。
  • 如果你真的需要刷掉它,那绝对是选择 Snackbar 的理由
于 2015-12-23T09:39:38.023 回答
1

我们的设计团队也在考虑使用吐司或小吃店。我们得出的结论是,考虑到它的灵活性,该应用程序应该使用小吃吧。

只有当我们需要一个持久的、短字符串的、在不同屏幕上仍然有意义的信息消息时,才应该使用 Toast 。

于 2016-10-09T23:43:04.747 回答
1

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

我认为对于“系统消息”,它们还指的是这样一个事实,即敬酒将在特定时间显示并且即使用户在活动之间导航并且即使应用程序移至后台也不能被解雇。

我认为小吃吧的一个优势是将其范围限制为一项活动并能够将其关闭。

于 2018-11-21T13:32:33.483 回答