컴포즈에서는 종종 부모 컴포저블이 재구성 과정에서 자식을 측정하기 전부터 그 크기 정보를 알아야 하는 경우가 발생한다. 예를 들어, 폭이 가장 넓은 자식과 일치하도록 Column의 폭을 조절하기 위해 자식의 폭을 알아야 할 수 있다. 부모는 자식의 크기를 측정할 수 없지만, 내재적 측정값(intrinsic measurement)을 이용하면 크기 정보를 얻을 수 있다.
Row(modifier.height(IntrinsicSize.Min)) {
}
Column(modifier.width(IntrinsicSize.Max)) {
}
This is a Text composable containing a line of text
This is a
Text
composable
containing
a line of
text
This is a Text
composable
containing a line
of text
@Composable
fun MainScreen() {
var textState by remember { mutableStateOf("") }
val onTextChange = { text: String ->
textState = text
}
Column(
Modifier
.width(200.dp)
.padding(5.dp)) {
Column {
Text(modifier = Modifier
.padding(start = 4.dp),
text = textState
)
Box(
Modifier
.height(10.dp)
.fillMaxWidth()
.background(Color.Blue))
}
MyTextField(text = textState, onTextChange = onTextChange)
}
}
@Composable
fun MyTextField(text: String, onTextChange: (String) -> Unit) {
TextField(
value = text,
onValueChange = onTextChange
)
}

Column(
Modifier
.width(200.dp)
.padding(5.dp)) {
Column(Modifier.width(IntrinsicSize.Max)) { // 수정한 부분
Text(modifier = Modifier
.padding(start = 4.dp),
text = textState
)
Box(
Modifier
.height(10.dp)
.fillMaxWidth()
.background(Color.Blue))
}
MyTextField(text = textState, onTextChange = onTextChange)
}

Column(
Modifier
.width(200.dp)
.padding(5.dp)) {
Column(Modifier.width(IntrinsicSize.Min)) { // 수정한 부분
Text(modifier = Modifier
.padding(start = 4.dp),
text = textState
)
Box(
Modifier
.height(10.dp)
.fillMaxWidth()
.background(Color.Blue))
}
MyTextField(text = textState, onTextChange = onTextChange)
}
