【问题标题】:How can a Snackbar be shown from a fragment in the correct view?如何在正确的视图中从片段中显示 Snackbar?
【发布时间】:2015-07-20 14:55:12
【问题描述】:

在我的片段中,我执行:

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

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

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

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

【问题讨论】:

  • 我遇到了同样的问题,有人评论说要将所有内容都包装在 CoordinatorLayout 中。不过没有验证

标签: android android-fragments android-snackbar


【解决方案1】:

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

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

来自Android Snackbar.make documentation

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

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

【讨论】:

  • 如果我们想在片段中显示一个snackbar,请确保片段根/父布局必须是坐标布局。
猜你喜欢
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 2017-04-10
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多