intrinsic 생소한 단어여서 사전을 통해 의미를 찾아봤습니다.
 
본질적인, 고유의 
 
그 일(과업)은 본질적인 흥미가 없다.
다이아몬드의 본질적인 가치
 
컴포즈 레이아웃에서 본질적인 측정 제목만 봐서는 이해 할 수가 없었습니다.
 
컴포즈는 자식들을 한번만 측정한다는 규칙이 있다고 합니다.
두번 측정할경우 런타임 에러가 난다고합니다.
어떤경우에 자식을 두번 측정하는지도 이해는 가지 않습니다.
 
컴포즈는 트리구조로 레이아웃을 구현하니 이것을 그릴 때
제일 끝의 자식요소부터 후위순회(?) 순서로 화면을 그려나갈 것이라고 생각합니다.
 
예전부터 레이아웃을 구현하다보면 자주 발생하는 문제점이 있었습니다.
자식요소의 크기를 max(match_parents)로 잡고 부모의 크기를 자식의 상대적 크기 (wrap_contents)로 잡을경우
부모는 자식이 최대 크기를 잡았으니 당연히 최대 크기로 설정이 됩니다.

 
이름과 식당명이 부모의 상대적인 크기에 맞춰 보여질 수 있도록 구현해보았습니다.
하지만 부모의 크기를 지정해주지 않으면 왼쪽과같이 가장 큰 크기로 설정이 됩니다.

 

아래 코드와같이 부모의 height를 IntrinsicSize를 적용해주면 자식의 상대적인 크기가 Max이더라도 자식의 고정 크기중 가장 높은 값을 기준으로 설정해주는 것 같습니다.

Row(
    Modifier
        .padding(start = Dp(15f))
        .height(IntrinsicSize.Min) // IntrinsicSize.Min 으로 설정
        .fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically
) {
    // 프로필 이미지
    AsyncImage(
        model = uiState.profilePictureUrl,
        contentDescription = "",
        modifier = Modifier
            .width(40.dp)
            .height(40.dp)
            .clickable {
                onProfile?.invoke(0)
            }
    )

 

https://github.com/sarang628/BaseFeed

 

GitHub - sarang628/BaseFeed

Contribute to sarang628/BaseFeed development by creating an account on GitHub.

github.com

 

다시 정리해보면,

자식의 크기를 부모에 꽉차도록 상대적으로 설정했을경우

부모의 크기를 IntrinsicsSize.Min 설정했을경우 자식의 상대 크기는 0이 됩니다.

부모의 크기를 설정하지 않을경우 자식의 상대적 크기는 화면이 최대값이 됩니다.

 

+ Recent posts