我是安卓开发的新手,我对Context和View.So感到困惑,我只想知道为什么我们在Snackbar中传递视图,而在Toast中传递context,而我们同时使用两者来显示通知/消息。
发布于 2018-04-04 01:17:59
Snackbar遍历视图树,直到它决定放置的位置。然后,它会将自己附加到View树。因此,它需要一个附加到视图树的View作为起点。
Toast只是在屏幕上显示一条浮动消息。它不需要附加到任何视图,因此不需要view对象。但是,它确实需要对平台有一定的了解,所以Context是合适的。
发布于 2018-04-04 01:28:35
Toast只是显示在当时屏幕上发生的任何事情的顶部。它与当时屏幕上发生的事情没有任何联系。实际上,您的Toast可以显示在另一个完全不同的应用程序之上。Toast需要一个Context,因为您可以将资源ID作为参数传递,而Android将需要访问您的应用程序的资源(通过Context)。安卓还需要一个Context,因为它将你的Toast绑定到你的应用程序上,这样它就可以在某些情况下清理它。
Snackbar与应用程序的UI耦合更紧密。Snackbar是一个绑定到应用程序的视图层次结构的View。当您创建Snackbar时,您将View作为参数传递,以便Android可以扫描视图层次结构以在视图层次结构中找到合适的位置来创建Snackbar。如果您的视图层次结构包含CoordinatorLayout,则Snackbar将获得额外的行为(滑动以取消,移动一个浮动的操作按钮)。如果您没有UI,则无法显示Snackbar,并且无法在另一个应用程序的UI中显示Snackbar。
https://stackoverflow.com/questions/49635719
复制相似问题