为什么FAB使用layout_anchorGravity在CardView下设置

时间:2018-11-06 13:47:38

标签: android

<?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"
                android:id="@+id/activity_login"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/colorPrimary">

                <android.support.v7.widget.CardView
                    android:id="@+id/card_authentication_container"
                    style="@style/CardView"
                    android:layout_width="300dp"
                    android:layout_height="wrap_content"
                    android:layout_above="@id/button_authentication"
                    android:layout_gravity="center_horizontal|top"
                    android:layout_marginTop="32dp"
                    app:cardCornerRadius="10dp"
                    app:cardElevation="10dp">
                </android.support.v7.widget.CardView>

                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/float_button_authenticate"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/gamepad"
                    app:fabSize="mini"
                    app:layout_anchor="@id/card_authentication_container"
                    app:layout_anchorGravity="bottom|center_horizontal" />
            </android.support.design.widget.CoordinatorLayout>

当我尝试使用app:layout_anchorGravity =“ bottom | center_horizo​​ntal”在CardView上设置浮动操作按钮时,它会在CardView下设置。

Like this

1 个答案:

答案 0 :(得分:0)

问题出在您的身上

app:cardElevation="10dp"

由于CardView的海拔高度将大于FloatingActionButton中的海拔高度,因此它将始终显示在后面。

说明:来自documentation

  

高程是沿曲面的两个表面之间的相对距离   z轴。

因此,就z轴而言,CardView的位置(10dp)比FAB高得多(因为您未定义任何海拔值,它将使用默认值0dp)。


解决方案: 在FAB中将高度设置为 10dp或更高

示例:

<android.support.design.widget.FloatingActionButton
        android:id="@+id/float_button_authenticate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/gamepad"
        app:elevation="10dp"
        app:fabSize="mini"
        app:layout_anchor="@id/card_authentication_container"
        app:layout_anchorGravity="bottom|center_horizontal" />

提示:请勿将10dp用于卡片提升。在material specification中使用建议值1dp。