Я добавил 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>
Похоже, это ошибка (или, возможно, особенность) BottomAppBar. Вертикальное смещение FAB зависит от высоты BottomAppBar; если вместо этого вы установите layout_height на 48dp, он будет очень хорошо сидеть в подставке. С другой стороны, если вы установите высоту 200dp, вы увидите, что FAB находится еще дальше.
Вдобавок (и к сожалению) app:fabCradleVerticalOffset должен иметь положительное значение. Если вы попытаетесь использовать отрицательное значение (чтобы нажать FAB вниз), приложение выйдет из строя при запуске.
Я не вижу общедоступного API, который позволил бы вам решить эту проблему. Вместо этого вам просто нужно использовать меньшую высоту для вашего BottomAppBar. Возможно, вы сможете соединить два изображения вместе, чтобы имитировать более высокую планку.
Вау, спасибо. Я считаю это ошибкой. Я смог исправить это с нормальной высотой панели приложения и полем внизу (и белым фоном).