将Snackbar附加到RecyclerView

时间:2018-11-13 17:32:24

标签: android android-layout

我正在创建一个典型的聊天应用程序,中间是一个RecyclerView,底部是消息传递控件。

我想显示一个绑定到RecyclerView的小吃栏(因此显示在Recyclerview的底部),以便将其显示在消息传递控件的上方而不是屏幕的底部。

当我设置snackbarChat = Snackbar.make(findViewById(R.id.recycler_view), "", Snackbar.LENGTH_INDEFINITE);时,小吃栏仍会显示在屏幕底部(并覆盖消息传递控件),而不是RecyclerView底部所期望的那样。

问题:我如何将快餐栏装到Recyclerview的屏幕上?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

摘自make()的文档:

  

Snackbar将尝试根据提供给view的值找到一个父视图来保存Snackbar的视图。 Snackbar将沿着视图树走,尝试找到合适的父级,将其定义为CoordinatorLayout或窗口装饰的内容视图,以先到者为准。

因此,当您传递findViewById(R.id.recycler_view)的结果时,make()调用将查看RecyclerView的父级,以及父级的父级,依此类推,直到找到{{1 }}或进入主内容视图。

我敢打赌,您快要下半年了。

一种简单的解决方法是将CoordinatorLayout包装在RecyclerView中。在看不到布局XML的情况下,我无法确切地说出如何做到这一点,但您可能只想

CoordinatorLayout