FloatingActionButton слишком высоко над BottomAppBar - PullRequest
0 голосов
/ 04 января 2019

Я добавил FAB в BottomAppBar из API 28, как показано в XML ниже. Проблема в том, что он плавает слишком высоко над нижней планкой, а не сидит в колыбели. Нет изменений, если я установлю 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 голосов
/ 04 января 2019

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

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

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

...