【问题标题】:Snackbar vs Toast小吃店与吐司
【发布时间】:2018-09-13 02:42:55
【问题描述】:

我是 android 开发的新手,我对 Context 和 View 感到困惑。所以,我只想知道为什么我们在 Snackbar 中传递视图而在 Toast 中传递上下文,而我们同时使用两者来显示通知/消息。

【问题讨论】:

    标签: android toast snackbar


    【解决方案1】:

    Toast 只是显示在当时屏幕上的任何内容之上。它与当时屏幕上发生的事情没有任何联系。事实上,您的Toast 可以显示在另一个完全不同的应用程序之上。 Toast 需要 Context,因为您可以将资源 ID 作为参数传递,Android 将需要访问您的应用程序的资源(通过 Context)。 Android 还需要Context,因为它会将您的Toast 绑定到您的应用程序,以便它可以在某些情况下清理它。

    Snackbar 与应用程序的 UI 耦合更紧密。 SnackbarView,它与应用程序的视图层次结构相关联。创建Snackbar 时,将View 作为参数传递,以便Android 可以扫描视图层次结构以在视图层次结构中找到合适的位置来创建Snackbar。如果您的视图层次结构包含CoordinatorLayout,则Snackbar 会获得其他行为(滑动以关闭,将浮动操作按钮移开)。如果您没有 UI,则无法显示 Snackbar,并且无法在其他应用程序的 UI 中显示 Snackbar

    【讨论】:

      【解决方案2】:

      Snackbar 向上遍历视图树,直到它决定放置的位置。然后它将自己附加到视图树。因此,它需要一个附加到视图树的视图作为起点。

      Toast 只是在屏幕上显示一条浮动消息。它不需要附加到任何视图,因此不需要 View 对象。但是,它确实需要一些平台知识,所以Context 是合适的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-10
        • 2019-12-30
        • 2020-07-25
        • 2018-09-27
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 2016-04-01
        相关资源
        最近更新 更多