2

내 레이아웃의 맨 아래에 조각이 있으며, 표시 될 때 내 FAB와 겹칩니다.
그럼 FAB을이 Fragment에 의존하도록 만들 수 있습니까 (Fragment가 나타나면 스낵바가 표시된 것처럼 FAB를 들어 올리십시오)?플로팅 동작 버튼 위치

답변

0

FABSnackbar 사이의 동작은 CoordinatorLayout을 두보기의 직접적인 부모로 갖는 결과입니다. 코디네이터 레이아웃이이 애니메이션 효과를 처리합니다.

조정자 레이아웃은 하나 이상의 하위보기와 특정 상호 작용을위한 컨테이너로 사용됩니다.

CoordinatorLayout의 아이 뷰에 대한 동작을 지정함으로써 당신은 단일 부모의 내부의 다양한 상호 작용을 제공 할 수있는 그 전망도 서로 상호 작용할 수 있습니다.

참조 : Coordinator Layout | Android Developers

그래서 조각을 잡고보기는 그것을 위해 Behaviour 구현을 가질 필요가있다. 그러면보기가 다른보기와 상호 작용하는 방식이 정의됩니다.

CoordinatorLayoutBehaviours을 만드는 방법은 guide을 확인하십시오.

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 대신 루트 구성 요소로 변경했습니다.