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

问题描述

我正在练习作曲。我有一个简单的设计,其中包含 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)
}

解决方法

您可以使用以下内容:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...