如何在片段中正确地显示Snackbar?

5
在我的fragment中,我执行以下操作:
``` mActionHelper.showUndoBar(getView(), itemsList, lastPositionSelected); ```
`showUndoBar()`方法仅仅创建一个Snackbar,形式如下:
``` Snackbar.make(view, message, Snackbar.LENGTH_LONG); ```
然而,视图似乎不正确,因为Snackbar不响应滑动手势,并且仅填充了平板分屏模式下左下角的区域。大多数Snackbar示例演示从Activity调用Snackbar,因此我认为我使用Fragment是问题所在。如何获取并传递正确的视图以便Snackbar正确显示?

我也遇到了同样的问题,有人评论说将所有内容都包装在一个CoordinatorLayout中。不过没有进行验证。 - xorgate
1个回答

6

您的问题与使用Fragment无关。

如果您的布局中没有CoordinatorLayout,则不会启用滑动删除功能,而在平板电脑上,Snackbar的显示将位于布局的最底部左侧。 Snackbar具有最大宽度,可防止其占用整个平板电脑的宽度,但是如果需要,您也可以使用CoordinatorLayout将Snackbar居中在平板电脑上。

根据Android Snackbar.make文档

Snackbar将尝试查找父视图以保存Snackbar的视图,从给定view的值开始。 Snackbar将沿着视图树向上遍历,尝试找到合适的父级,定义为CoordinatorLayout或窗口装饰的内容视图,以先到者为准。

在您的视图层次结构中拥有CoordinatorLayout允许Snackbar启用某些功能,例如滑动删除和自动移动诸如FloatingActionButton之类的小部件。


如果我们想在片段中显示 snackbar,请确保片段的根/父布局必须是协调布局。 - sssvrock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接