Android(Kotlin)

CoordinatorLayout(xml) + LazyColumn(Compose)

E.I.T.U 2023. 9. 7. 12:22

상단에 Collapsable한 뷰가 필요해서 CoordinatorLayout을 사용했는데

리스트를 RecyclerView로 만들고싶지는 않아서

LazyColumn과 함께 사용할 수 있도록 하려면 어떻게 해야할까 고민해보았다.

 

app:layout_behavior로 ScrollingViewBehavior를 갖는 ComposeView를 사용하면 된다.

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

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appBar"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:background="@null"  
            app:elevation="0dp">

            <com.google.android.material.appbar.CollapsingToolbarLayout ... />

        </com.google.android.material.appbar.AppBarLayout>

        <androidx.compose.ui.platform.ComposeView
            android:id="@+id/frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

LazyColumn에서 nestedScroll 설정해주는것도 잊지말자

val nestedScroll = rememberNestedScrollInteropConnection()

LazyColumn(
	modifier = Modifier
    	.nestedScroll(nestedScroll)
) {
	//Your Code
}