5

在我的片段中,我执行:

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

showUndoBar() 方法简单地创建一个 Snackbar,其形式如下:

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

然而,不知何故,视图是不正确的,因为 Snackbar 不响应滑动关闭手势,而仅填充平板电脑拆分视图的左下象限。大多数 Snackbar 示例都演示了从 Activity 调用 Snackbar,所以我认为我使用 Fragment 的事实是问题所在。如何获取并传递正确的视图以使 Snackbar 正确显示?

4

1 回答 1

6

您的问题与您对 Fragments 的使用无关。

如果您的布局中没有 a CoordinatorLayout,您将不会启用滑动关闭功能,并且在平板电脑上,Snackbar 的显示将位于布局的最左下角。Snackbar 有一个最大宽度,使其无法填充平板电脑的整个宽度,但是CoordinatorLayout如果需要,您也可以使用 Snackbar 将 Snackbar 置于平板电脑的中心。

来自Android Snackbar.make 文档

Snackbar 将尝试从给定的值中找到一个父视图来保存 Snackbar 的视图。Snackbar 将沿着视图树向上寻找合适的父级,该父级定义为 CoordinatorLayout 或窗口装饰的内容视图,以先到者为准。

在视图层次结构中拥有 CoordinatorLayout 允许 Snackbar 启用某些功能,例如滑动关闭和自动移动小部件(如 FloatingActionButton)。

于 2015-07-22T05:34:23.100 回答