浮动操作按钮在 SECOND Snackbar 下消失

Posted

技术标签:

【中文标题】浮动操作按钮在 SECOND Snackbar 下消失【英文标题】:Floating Action Button diasappears under SECOND Snackbar 【发布时间】:2016-01-09 16:42:15 【问题描述】:

我正在使用 CoordinatorLayout 将浮动操作按钮保持在 Snackbar 上方,效果很好。 ...但仅适用于第一个 Snackbar。创建第二个时,当第一个仍然存在时,FAB 会滑到它下面。

我在 RecyclerView 中使用它,我可以在其中删除项目。当一个项目被删除时,会出现一个“撤消”Snackbar。因此,当您一个接一个地删除一些项目时,可见的 Snackbar 会被一个新的替换(这会导致 FAB 行为)

您知道将 FAB 保持在新 Snackbars 之上的解决方案吗?

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:fab="http://schemas.android.com/tools"
    android:id="@+id/coordinator_layout"
    android:layout_
    android:layout_
    android:backgroundTint="@color/background_grey"
    android:orientation="vertical">

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical">

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_
            android:layout_
            android:scrollbars="vertical" />

    </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_
            android:layout_
            android:layout_gravity="bottom|end"
            android:layout_marginBottom="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:elevation="6dp"
            android:src="@drawable/ic_add_white_36dp"
            app:borderWidth="0dp"
            app:fabSize="normal"
            app:pressedTranslationZ="10dp"
            app:rippleColor="@color/abc_primary_text_material_dark" />

</android.support.design.widget.CoordinatorLayout>

这是我删除项目后的样子

...然后在我删除另一个项目之后

【问题讨论】:

您需要将 Snackbar 添加到 CoordinatorLayout。 ***.com/a/32777587/2444099 Moving Floating Action Button up and down to avoid getting blocked by a snackbar的可能重复 很抱歉,它不起作用。同样的问题 【参考方案1】:

这总是会发生的,因为snackbar 是视图上方的一层。在这种情况下不应该使用堆叠的snackbar 请参阅google gidelines .. https://www.google.co.in/design/spec/components/snackbars-toasts.html#snackbars-toasts-usage

相反,您的实现应该类似于 https://github.com/jenzz/Android-UndoBar

为改变你的设计道歉

【讨论】:

谢谢。我的 Snackbars 没有堆叠。当显示一个并且我从 RecyclerView 中删除另一个项目时,新的 Snackbar 会替换旧的。它看起来不像 Google 设计指南的屏幕截图 4。但是,在这种情况下,Snackbar(带有动作)不正是必需的吗?就像刷掉 Google Now Cards 我在开头的帖子中附上了一些截图 它实际上负责坐标布局来处理这个问题,每次出现snackbar时,但是在这种情况下会有一些错误..需要注意的重要一点是CoordinatorLayout没有任何对 FloatingActionButton 或 AppBarLayout 工作的先天理解——它只是以 Coordinator.Behavior 的形式提供了一个额外的 API,它允许子视图更好地控制触摸事件和手势,以及声明彼此之间的依赖关系并通过 onDependentViewChanged() 接收回调.你需要玩弄这两种方法.. 看看这个,可能会有所帮助......虽然 urs 是原生的,但仍然会覆盖该事件,将提供一些见解lab.getbase.com/introduction-to-coordinator-layout-on-android

以上是关于浮动操作按钮在 SECOND Snackbar 下消失的主要内容,如果未能解决你的问题,请参考以下文章

如何像浮动按钮一样在 Snackbar 上方移动视图

如何设置小吃栏和浮动操作按钮之间的距离?

Snackbar Toast

自定义 Snackbar 操作按钮的颜色问题

Android Snackbar 的使用

将值传递给要在底部工作表中使用的浮动操作按钮