在我的片段中,我执行:
mActionHelper.showUndoBar(getView(), itemsList, lastPositionSelected);
showUndoBar()方法只是创建一个形式为:
的Snackbar Snackbar.make(view, message, Snackbar.LENGTH_LONG);
然而,某种程度上视图是不正确的,因为Snackbar不响应滑动到解除手势,只填充平板电脑拆分视图中的左下象限。大多数Snackbar示例都演示了从一个Activity调用Snackbar,所以我认为我使用Fragment的事实就是问题所在。如何获取并传递正确的Snackbar视图才能正确显示?
答案 0 :(得分:4)
您的问题与您使用碎片无关。
如果您的布局中没有CoordinatorLayout
,则无法通过滑动来关闭启用的功能,而在平板电脑上,Snackbar的显示位于布局的最左下方。 Snackbar的最大宽度可以阻止它填充平板电脑的整个宽度,但是如果需要,您还可以使用CoordinatorLayout
将Snackbar置于平板电脑的中心位置。
来自Android Snackbar.make documentation:
Snackbar将尝试查找父视图以保存Snackbar的视图 给予观察的价值。 Snackbar将沿着视图树向上走 找到一个合适的父级,它被定义为CoordinatorLayout或者 窗口装饰的内容视图,以先到者为准。
在视图层次结构中使用CoordinatorLayout可以使用Snackbar 启用某些功能,例如滑动到解除和自动 移动像FloatingActionButton这样的小部件。