Android

Vertically scrollable component was measured with an infinity ... 오류

ej503 2023. 2. 11. 23:51

 

@Composable
fun MainView(
    modifier: Modifier = Modifier,
    imageResourceId : Int,
) {
    ConstraintLayout(modifier = modifier.fillMaxSize()) {
        val (image) = createRefs()
        Image(
            painter = painterResource(id = imageResourceId),
            contentDescription = "empty",
            modifier = Modifier
                .constrainAs(image) {
                    linkTo(
                        start = parent.start,
                        end = parent.end,
                    )
                    width = Dimension.ratio("1:2")
                    height = Dimension.ratio("1:0.5")
                }
        )
    }
}

@Composable
fun SoundsList() {
    val sounds = listOf(
        "CAR HORN", "SIREN", "FIRE ALARM", "RINGTONE", "BARKING", "KNOCKING", "DOORBELL", "CRYING",
    )
    Column(
        modifier = Modifier
            .fillMaxWidth()
            .fillMaxHeight(),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text(
            text = "Sounds List",
            fontSize = 24.sp,
            modifier = Modifier.padding(35.dp),
            style = TextStyle(
            ), fontWeight = FontWeight.Black
        )
        LazyColumn(
            modifier = Modifier.height(500.dp)
        ) {
            items(sounds) { sound ->
                var selected1 by remember { mutableStateOf(false)}
                Rows(name = sound, change = selected1, onCheckedChange = {
                    selected1 = it
                })
                Divider()
            }
        }
    }
}

@Composable
private fun Rows(name:String, change:Boolean, onCheckedChange: (Boolean) -> Unit) {
    Row(
        verticalAlignment = Alignment.CenterVertically,
        horizontalArrangement = Arrangement.SpaceBetween
    ) {
        Text(text = name,
            modifier = Modifier
                .padding(15.dp)
                .weight(3f),
            textAlign = TextAlign.Start,
        )
        Switch(
            checked = change,
            onCheckedChange = onCheckedChange,
            colors = SwitchDefaults.colors(
                checkedThumbColor = Color.White,
                uncheckedThumbColor = Color.White,
                checkedTrackColor = Color.Green,
                uncheckedTrackColor = Color.Gray
            ),
            modifier = Modifier.weight(1f)
        )
    }
}

 

Vertically scrollable component was measured with an infinity maximum height constraints, which is disallowed.

 

오류 상황 : 안드로이드 스튜디오에서, List view를 만드는 과정에 Column 안에 LazyColumn을 썼을 때 infinity maximum height constraints 에러가 났다. 구글링을 해보니, 다른 구성 요소 내 중첩된 경우 1) with로 래핑해 사용한다. 2) 무한 높이 제약을 유발할 수 있는 부분 찾기 가 해결 방안인 듯 했다.

 

확인 사항: 래핑이 잘 안되서 높이 제한을 두는 방법을 찾다가 공식 문서에서 modifier = Modifier.height( )를 LazyColumn 안에 적어 제한하는 방법을 알게 됐고 해결했다.