만들었던 컴포넌트 예제
@Composable
private fun HeaderLsTxt(
modifier: Modifier = Modifier,
param: HeaderTxtParams
) {
Row(
modifier = modifier
.height(IntrinsicSize.Min),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(4.dp)
) {
Text(
text = param.title.text,
style = param.title.style,
color = OverdareTheme.colors.Element.IcnTxt.Normal.Strong_W,
overflow = TextOverflow.Ellipsis,
maxLines = 1
)
if (param.subTitle.text.isNotEmpty()) {
Text(
text = param.subTitle.text,
style = param.subTitle.style,
color = OverdareTheme.colors.Element.IcnTxt.Normal.Medium,
overflow = TextOverflow.Ellipsis,
maxLines = 1
)
}
}
}
공식문서 예제 및 설명
https://developer.android.com/develop/ui/compose/layouts/intrinsic-measurements?hl=ko
코드 예제
@Preview
@Composable
fun LazyColumnExample() {
LazyColumn {
item {
Box(Modifier.fillMaxHeight()) {
Text("test")
}
}
}
}
결과는 아래처럼 자식(Text) 를 감싸는 높이를 취하게 된다.

내용이 변경됨
Modifier.Node 방식으로 재작성 된 이유는 아래 문제를 해결하기 위함
1. materialize
-> Layout 을 돌면서 새롭게 Modifier를 새롭게 생성
2. remember / state
-> Too many State
3. deep depth & big tree
-> Too many Modifiers
Layout 선언 시
Composed modifier -> 상태를 가짐
생성 시 modifier를 설정하는 경우
재측정 요청(dirty) -> owner가 dirty 노드를 모두 [재측정 -> 재배치 -> 그리기]
그리기는 outerLayoutNodeWrapper에 위임
Owner가 layer 종류를 결정
Owner는 semantics와 Android SDK 접근성 API와의 연결을 처리하는 일을 위임받은 delegate.
이하 내용이 변경됨