TIL240430 Compose ConstraintLayout

jericho·2024년 4월 30일

TIL

목록 보기
56/62

컴포즈에서도 ConstraintLayout을 사용할 수 있다.
다만 순정(?) 컴포즈에서는 없고 따로 라이브러리?를 사용해야 한다.

implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")

ConstraintLayout을 사용하려면 컴포저블 함수에서 아래처럼 사용하면 된다.
그냥 다른 컴포저블 쓰는 것과 같다.

ConstraintLayout(
    modifier = modifier
) {
    //...
}

제약을 사용하려면 id가 있어야 하는데, xml에서 위젯들에 id를 지정하던 것과 달리 컴포즈에는 id가 없다. 그래서 따로 메서드로 id를 만들어준다.
(네이밍은 그냥 위젯 id를 복사해와서 컨벤션이 안맞는데 넘어가자)

val (iv_item_thumbnail, iv_item_love, ll_item) = createRefs()

이 id를 수정자에 .constrainAs(id) {} 형태로 사용하면 된다.
이후 제약 조건을 주는 건 아래 코드와 같이 사용하면 된다.
linkTo에서 parent에 접근하고 싶으면 id 대신 parent를 쓰면 된다.

modifier = Modifier
    .size(48.dp)
    .constrainAs(iv_item_love) {
        top.linkTo(iv_item_thumbnail.top, margin = 8.dp)
        end.linkTo(iv_item_thumbnail.end, margin = 8.dp)
    }

더 자세한 내용은 Android Developers를 참고하자.

https://developer.android.com/develop/ui/compose/layouts/constraintlayout?hl=ko

0개의 댓글