FloatingActionButton слишком высоко над BottomAppBar

Я добавил FAB в BottomAppBar из API 28, как показано в XML ниже. Проблема в том, что он плавает слишком высоко над нижней планкой, а не сидит в колыбели. Нет изменений, если я установлю app:fabCradleVerticalOffset в 0dp.

<?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 ответ

Решение

Похоже, это ошибка (или, возможно, особенность) BottomAppBar, Смещение по вертикали FAB зависит от высоты BottomAppBar; если вы установите layout_height быть 48dp вместо этого он будет очень хорошо сидеть в колыбели. С другой стороны, если вы установите высоту 200dp вы увидите, что FAB еще дальше.

Дополнительно (и к сожалению) app:fabCradleVerticalOffset должно быть положительным значением. Если вы попытаетесь использовать отрицательное значение (нажать FAB вниз), приложение будет аварийно завершено при запуске.

Я не вижу публичного API, который позволил бы вам решить эту проблему. Вместо этого вам просто нужно использовать меньшую высоту для вашего BottomAppBar, Возможно, вы сможете сшить два вида вместе, чтобы смоделировать более высокую планку.

Другие вопросы по тегам