본문 바로가기

공부/Android

[안드로이드] FragmentContainerView

- Fragment를 위해 특별히 설계된 레이아웃으로 androidx.fragment1.2.0에 도입되었습니다.

- FrameLayout을 확장하여 프래그먼트 트랜잭션을 안정적으로 처리할 수 있고, 프래그먼트 동작을 조정할 수 있는 추가 기능도 있습니다.

- FragmentContainerView는 activity xml layout 안에 설정되어 Fragment의 container로 사용되어야 합니다.

 

 

kotlin.Any
   ↳
android.view.View
   ↳
android.view.ViewGroup
   ↳
android.widget.FrameLayout
   ↳
androidx.fragment.app.FragmentContainerView
 

 

FragmentContainerView는 Fragment 사용 사례 이외의 다른 ViewGroup (FrameLayout, LinearLayout 등)을 대체하는 용도로 사용해서는 안됩니다.

FragmentContainerView는 android:name attribute를 사용하여 프래그먼트를 추가하는데 사용할 수도 있으며, 일회성 작업을 수행합니다. FragmentContainerView는 Fragment의  Fragment#onCreateView(LayoutInflater, ViewGroup, Bundle)에서 반환된 뷰만 허용합니다. 다른 뷰를 추가하면  IllegalStateException이 발생할 것입니다.

 

레이아웃 애니메이션과 트랜잭션은 API 17 이상에서 비활성화되고, FragmentTransaction#setCustomAnimations(int, int, int, int)

에서 애니메이션을 수행해야합니다. animateLayoutChanges가 true이거나 setLayoutTransition(LayoutTransition)

가 직접 호출되면  UnsupportedOperationException이 발생합니다. exit 애니메이션을 사용하는 프래그먼트는 다른 프래그먼트보다 더 빠르게 그려지고, 기존 프래그먼트가 뷰 위에 표시되지 않습니다.

 

 

 

[참고]

https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentContainerView

 

FragmentContainerView  |  Android 개발자  |  Android Developers

 

developer.android.com