我正在使用
LazyColumn
实现一个聊天应用程序。 我用 reverseLayout = true
创建了这个,因为我希望 LazyColumn 在视图和键盘首次出现时自动滚动到最后一条消息。
我希望
TextField
留在屏幕底部,因此我实现了 stickyHeader
。 当我的 upperLimit
设置为较高的数字(视图需要滚动)时,TextField
停留在屏幕底部。 然而,当 upperLimit
设置为更小的数字(例如 3)时,TextField
不再停留在屏幕底部。
我需要编辑什么来解决这个问题?
@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
@Composable
fun ChatView() {
val lazyColumnState = rememberLazyListState()
var textFieldText by remember { mutableStateOf("") }
val upperLimit = 30
LazyColumn(
state = lazyColumnState,
contentPadding = PaddingValues(40.dp),
reverseLayout = true
) {
stickyHeader {
TextField(
value = textFieldText,
onValueChange = { inputTextField ->
textFieldText = inputTextField
}
)
}
item {
for (i in upperLimit downTo 0) {
Text(
text = "This is message no. $i",
modifier = Modifier.padding(10.dp)
)
}
}
}
}
请尝试将
fillMaxHeight()
修饰符添加到 LazyColumn
:
LazyColumn(
modifier = Modifier.fillMaxHeight(),
state = lazyColumnState,
contentPadding = PaddingValues(40.dp),
reverseLayout = true
) {
//...
}