Android - Snackbar vs Toast - 用法和差异

时间:2015-12-23 09:25:56

标签: android difference android-toast android-snackbar

到目前为止,我们一直在我们的应用程序中使用Toasts,因为我们计划采用支持设计库的一些新功能,我想知道Snackbar与Toast的推荐用法是什么。

我一直在阅读 the google material snackbar doc.

  

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

和祝酒词。

  Android还提供了一种胶囊形状的吐司,主要用于   系统消息。 Toasts与snackbars类似但不包含   行动,不能在屏幕上刷掉。

我明白他们做了什么,但我在使用什么时有点困惑。这是否意味着:

  • 如果我不需要用户互动,我会使用吐司吗?
  • "系统消息"是什么意思?这适用于在我的应用和Android系统之间发生重要事件时显示信息吗?
  • 我喜欢的是滑动屏幕功能 - 这是开始用小吃店替换烤面包的原因吗? (虽然这是一个基于意见的问题)

9 个答案:

答案 0 :(得分:83)

  

如果我不需要用户互动,我会使用吐司吗?

你仍然可以使用零食吧。对小吃吧采取行动并非强制性要求。

  

"系统消息"是什么意思?这是否适用于显示   当我的应用程序与我的应用程序之间发生重要事   Android系统?

我相信这意味着如果有一些与系统有关的消息,就要使用Toasts。无论是作为一个整体的android还是你可能正在运行的一些后台服务。例如。 Text-To-Speech is not installed.No Email client found.

  

我喜欢的是滑动屏幕功能 - 这是一个原因   开始用小吃店取代烤面包片? (这有点基于意见   问题虽然)

这是一个原因。但还有其他几个加分。例如:即使活动结束,您的吐司也会保留在屏幕上。 Snackbar没有。在退出应用程序很久之后,如果toast没有弹出(或者在按顺序创建多个Toast的情况下不断弹出),则会产生较少的混淆。小吃吧不会发生这种情况。

不仅仅是一切:我建议如果你在想,你应该转换。 SnackBars看起来比Toasts好得多。

答案 1 :(得分:40)

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

+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+
| # |                                Toast                                 |                                 Snackbar                                 |
+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+
| 1 | Can’t 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 | Can’t 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 |
+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+

答案 2 :(得分:20)

<强>吐司:

  1. Toast在API Level 1中添加
  2. 基本上不需要活动(可以在Android主页上显示,甚至可以在其他应用上方显示)
  3. 无法根据用户输入执行操作
  4. 不能通过滑动来解雇
  5. 无法处理用户输入,如轻扫,点击等。
  6. 适合向用户显示信息消息
  7. <强>小吃吧:

    1. SnackBar已在API Level 23中添加
    2. 可以在应用程序的活动中显示
    3. 它可以执行操作
    4. 可以通过滑动解除
    5. 它可以处理用户输入
    6. 适合向需要关注的用户显示警告/信息类型消息
    7. 使用SnackBar和Toast:

      <强>小吃吧:

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

      <强>吐司:

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

      例如:

      当您的应用尝试从远程服务器下载JSON但由于服务器超时或未找到资源而失败时,您只需显示错误消息,指出“发生了错误”。但是要了解Toast消息不能被刷卡解雇。如果您仍希望能够在应用程序中解除它,请转到SnackBar。

答案 3 :(得分:8)

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

  

注意 Snackbar类取代了Toast。尽管目前仍支持Toast,但是Snackbar现在是向用户显示简短的临时消息的首选方式。

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

  

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

答案 4 :(得分:2)

Google的Material Design Specification表示没有行动可以获得Snackbar。他们提供了Snackbar如果只显示单个String应该是什么样子的示例。我认为“系统消息”意味着网络连接丢失等设备事件 - 例如,归档电子邮件是Gmail特定的操作。

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

答案 5 :(得分:2)

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();

答案 6 :(得分:1)

简短的回答是,这些是在后台发生的向用户传达事物的两种方式,你可以达到其中一个,它们都很好。只要确保你使用相同的,而不是来回切换。

答案很长:

  • 不,这意味着如果你需要一些动作,你必须使用Snackbar。您仍然可以仅将Snackbar用于消息(例如&#34; Uploading finished&#34;)。
  • 通过&#34; system&#34;它并不仅仅意味着Android系统。例如,如果从服务器获取信息时出现了json解析问题,您仍然可以使用Toast让用户在与服务器通信时出现问题。
  • 如果你真的需要刷掉这个,那就是选择Snackbar的原因。

答案 7 :(得分:1)

我们的设计团队正在考虑使用烤面包或零食。我们得出结论,应用程序应该使用零食栏,因为它具有灵活性。

只有在我们需要持久,短字符串,信息消息时才能使用Toasts,这些信息在不同的屏幕上仍然有意义。

答案 8 :(得分:0)

  

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

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

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