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

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

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

<?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>
3
0
1 189
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Benjoyo 04.01.2019 22:12

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