带有两个浮动操作按钮的CoordinatorLayout

14

我在 CoordinateLayout 视图中有两个 FAB。当我显示一个 Snackbar 时,我期望这两个 FAB 一起向上移动,但结果是只有一个 FAB(下面的那个)响应并上移(见图片)。我错过了什么吗?

之前 enter image description here 之后 enter image description here

调用 Snackbar:

 mSnackbar = Snackbar.make(getActivity().findViewById(R.id.coords_wrapper), "Loading", 1000000000);   

XML

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/coords_wrapper">

    <!-- main contents here, left out -->
    <Relativelayout ...... />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/action_button_location"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src ="@drawable/ic_add_black"
        android:layout_gravity="right|bottom"
        android:layout_marginBottom="82dp"
        android:layout_marginRight="16dp"
        app:borderWidth="0dp"
        app:elevation="6dp"
        />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/action_button_filter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src ="@drawable/ic_add_black"
        android:layout_gravity="right|bottom"
        android:layout_margin="16dp"
        app:borderWidth="0dp"
        app:elevation="6dp"
        />
</android.support.design.widget.CoordinatorLayout>
1个回答

19
根据工厂的 行为,仅在它与 Snackbar 相交时才进行转换。顶部按钮显然不会与 Snackbar 碰撞,因此不会发生任何事情。
您可以尝试定义一个锚点:
<android.support.design.widget.FloatingActionButton
    android:id="@+id/action_button_location"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    app:layout_anchor="@id/action_button_filter"
    app:layout_anchorGravity="top"
    android:layout_gravity="top"
    />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/action_button_filter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src ="@drawable/ic_add_black"
    android:layout_gravity="right|bottom"
    android:layout_margin="16dp"
    />

这将确定顶部浮动操作按钮 (action_button_location) 和底部浮动操作按钮 (action_button_filter) 之间的关系,使第一个始终在其他按钮之上,如使用 layout_anchorGravitylayout_gravity 属性定义的那样,两者都设置为 top。您可能需要重新定义边距。


我认为在使用action_button_location作为锚点之前,需要先定义action_button_filter。此外,我需要使用anchorGravity right|top,并包括layout_marginBottom="82dp"(以避免它们彼此接触)。 - David Ameller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接