有没有办法在 jetpack-compose 中不使用 ConstraintLayout 来实现 Dimension.fillToConstraints 行为?

时间:2021-03-02 14:00:19

标签: android kotlin android-jetpack android-jetpack-compose android-jetpack-compose-list

我正在练习作曲。我有一个简单的设计,其中包含 LazyColumn 和 TextField。我想要做的就是将 TextField 固定在底部。问题是因为 MessageList() 可组合没有静态高度,它填满了所有屏幕并使 TextField 消失。我通过使用 ConstraintLayout 可组合并设置 MessageList() 高度 Dimension.fillToConstraints 解决了这个问题。我想知道有什么方法可以通过只使用 Column() 而不是 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)
}

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

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")
    }
}

enter image description here