Контекст
Я пытаюсь создать экран, где у меня есть вид предварительного просмотра внизу экрана, и у меня есть две плавающие кнопки действия , привязанные к этому предварительному просмотру. Все это в CoordinatorLayout . Примерно так:
Красный макет представляет вид предварительного просмотра, а эти два серых квадрата являются плавающими кнопками действий. XML выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab1"
app:layout_anchorGravity="top|start"
android:layout_gravity="bottom"
app:layout_behavior=".util.ShrinkBehavior"
app:layout_anchor="@id/previewView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab2"
app:layout_anchorGravity="top|end"
android:layout_gravity="bottom"
app:layout_behavior=".util.ShrinkBehavior"
app:layout_anchor="@id/previewView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<FrameLayout
android:layout_gravity="bottom"
app:layout_anchorGravity="bottom"
android:background="@android:color/holo_red_dark"
android:id="@+id/previewView"
android:layout_width="match_parent"
android:layout_height="100dp"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
У каждого FAB есть этот набор ShrinkBehavior
, который в основном сокращает FAB, когда я отклоняю предварительный просмотр, поэтому оба FAB привязаны к предварительному просмотру. Когда я отклоняю предварительный просмотр, я использую ObjectAnimator
, чтобы переместить предварительный просмотр вниз, когда я закончил с анимацией, я установил видимость предварительного просмотра на GONE
.
Issue
Как только я установил видимость предварительного просмотра на GONE
, оба FAB будут расположены в верхнем левом углу. Раньше я думал, что если я сделаю вид привязки (предварительный просмотр) исчезнувшим, привязанные виды (FAB) по умолчанию будут иметь значение layout_gravity
. Я играл со всеми возможными различными комбинациями layout_gravity
и layout_anchorGravity
.
Обходной путь до сих пор
Единственный способ, которым я смог сохранить FAB выравнивают по нижней части экрана после исчезновения предварительного просмотра, поместив ConstrainLayout
в CoordinatorLayout
и используя его для выравнивания видов. Но я не совсем уверен, что это правильное решение.
Любой совет? Спасибо,