首页 > 解决方案 > 有没有办法在 jetpack-compose 中不使用 ConstraintLayout 来实现 Dimension.fillToConstraints 行为?

问题描述

我正在练习作曲。我有一个简单的设计,其中包含 LazyColumn 和 TextField。我要做的就是将 TextField 固定在底部。问题是由于MessageList()可组合没有静态高度,它会填满所有屏幕并TextField消失。我通过使用ConstraintLayout可组合和设置 MessageList()高度来解决这个问题Dimension.fillToConstraints。我想知道有没有办法通过只使用Column()not来实现这一点ConstraintLayout

Column {
    MessageList(list, state)
    Footer(message) {
      message = it
    }
}

@Composable
fun MessageList(list : List<ChatItem>, state : LazyListState){
    LazyColumn(state = state) {
    .....
    }
}

@Composable
fun Footer(message : String, onChange : (String) -> Unit){
    TextField(value = message, onValueChange = onChange)
}

标签: androidkotlinandroid-jetpackandroid-jetpack-composeandroid-jetpack-compose-list

解决方案


你可以使用类似的东西:

val itemsList = (0..60).toList()

Column {
    LazyColumn(modifier = Modifier.weight(1f)){
        items(itemsList) {
            Text("Item is $it")
        }
    }
    Row( verticalAlignment = Alignment.Bottom) {
        Text(text = "Footer row")
    }
}

在此处输入图像描述


推荐阅读