如何在正确的视图中从片段中显示Snackbar?

时间:2015-07-20 14:55:13

标签: android android-fragments android-snackbar

在我的片段中,我执行:

mActionHelper.showUndoBar(getView(), itemsList, lastPositionSelected);

showUndoBar()方法只是创建一个形式为:

的Snackbar

Snackbar.make(view, message, Snackbar.LENGTH_LONG);

然而,某种程度上视图是不正确的,因为Snackbar不响应滑动到解除手势,只填充平板电脑拆分视图中的左下象限。大多数Snackbar示例都演示了从一个Activity调用Snackbar,所以我认为我使用Fragment的事实就是问题所在。如何获取并传递正确的Snackbar视图才能正确显示?

1 个答案:

答案 0 :(得分:4)

您的问题与您使用碎片无关。

如果您的布局中没有CoordinatorLayout,则无法通过滑动来关闭启用的功能,而在平板电脑上,Snackbar的显示位于布局的最左下方。 Snackbar的最大宽度可以阻止它填充平板电脑的整个宽度,但是如果需要,您还可以使用CoordinatorLayout将Snackbar置于平板电脑的中心位置。

来自Android Snackbar.make documentation

  

Snackbar将尝试查找父视图以保存Snackbar的视图   给予观察的价值。 Snackbar将沿着视图树向上走   找到一个合适的父级,它被定义为CoordinatorLayout或者   窗口装饰的内容视图,以先到者为准。

     

在视图层次结构中使用CoordinatorLayout可以使用Snackbar   启用某些功能,例如滑动到解除和自动   移动像FloatingActionButton这样的小部件。