Snackbar vs Toast

时间:2018-04-03 17:13:44

标签: android toast snackbar

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

2 个答案:

答案 0 :(得分:3)

Snackbar遍历View树,直到它决定放置的位置。然后它会将自身附加到View树。因此,它需要附加到视图树的视图作为起点。

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

答案 1 :(得分:2)

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

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