2

У меня есть фрагмент в нижней части моего макета, и когда он отображается, он перекрывается с моим FAB.
Итак, как я могу заставить FAB зависеть от этого фрагмента (поднять FAB, когда отображается фрагмент, точно так же, как и при Snackbar)?Позиционирование с плавающим действием

ответ

0

Поведение между FAB и Snackbar является результатом наличия CoordinatorLayout в качестве прямого родителя двух видов. Схема координатора обрабатывает этот эффект анимации.

Координатор-макет используется в качестве контейнера для конкретного взаимодействия с одним или несколькими видами детей.

Определяя поведение для дочерних представлений координатораLayout, вы можете обеспечить множество разных взаимодействий в пределах одного родителя, а те виды также могут взаимодействовать друг с другом.

Ссылка: Coordinator Layout | Android Developers

Таким образом, ваш взгляд держит фрагмент должен иметь Behaviour реализацию для него. Это определит, как ваши представления взаимодействуют с другими представлениями.

Отметьте это guide как создать Behaviours для CoordinatorLayout.

Для FloatingActionButton это поведение уже определено в его классе. Проверьте источник here.

0

Я нашел решение. Вот мой макет:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.CoordinatorLayout 
     android:id="@+id/main_content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/mediaPlayerControlBar"> 

     <RelativeLayout> 



     </RelativeLayout> 

     <android.support.design.widget.FloatingActionButton 
      app:layout_behavior="com.unimusic.ScrollAwareFABBehavior" 
      app:fabSize="normal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom|end" 
      android:src="@drawable/ic_search_white_24dp" 
      android:id="@+id/fab" 
      android:layout_margin="16dp" 
      app:elevation="4dp"/> 


    </android.support.design.widget.CoordinatorLayout> 

    <fragment android:name="com.unimusic.mediaPlayerControlBar" 
     android:layout_width="match_parent" 
     android:layout_height="70dp" 
     android:id="@+id/mediaPlayerControlBar" 
     android:layout_gravity="bottom" 
     app:layout_anchor="@id/snackbarPosition" 
     app:layout_anchorGravity="bottom" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 

В основном, я сделал относительную компоновку корневого компонента вместо CoordinatorLayout.

Смежные вопросы