FloatingActionButton在BottomAppBar上方过高

时间:2019-01-04 18:30:16

标签: android android-layout floating-action-button android-bottomappbar

我像下面的XML一样,从API 28向BottomAppBar添加了FAB。问题在于,它漂浮在底杆上方的位置过高,而不是坐在摇篮中。如果将app:fabCradleVerticalOffset设置为0dp,则没有变化。

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout android:paddingTop="30dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <android.support.design.bottomappbar.BottomAppBar
        android:id="@+id/bottomAppBar"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_gravity="bottom"
        app:backgroundTint="@android:color/white"   
        app:fabAlignmentMode="center" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fabIncrement"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_exposure_plus_1_black_24dp"
        app:backgroundTint="@color/colorPrimary"
        app:fabSize="normal"
        app:layout_anchor="@id/bottomAppBar" />

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

1 个答案:

答案 0 :(得分:1)

这似乎是BottomAppBar的错误(或功能)。 FAB的垂直偏移量取决于BottomAppBar的高度。如果将layout_height设置为48dp,它将很好地放在通讯座中。另一方面,如果将高度设置为200dp,则会看到FAB距离更远。

(不幸的是)app:fabCradleVerticalOffset必须为正值。如果您尝试使用负值(将FAB按下),则该应用在运行时将崩溃。

我没有看到任何公共API可让您解决此问题。相反,您只需要为BottomAppBar使用较小的高度即可。也许您可以将两个视图缝合在一起,以模拟更高的钢筋。