当 LazyColum 项目列表很小时,粘性标题不会停留在屏幕底部

问题描述 投票:0回答:1

我正在使用

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

android-jetpack-compose android-jetpack-compose-lazy-column sticky-header
1个回答
0
投票

请尝试将

fillMaxHeight()
修饰符添加到
LazyColumn
:

LazyColumn(
    modifier = Modifier.fillMaxHeight(),
    state = lazyColumnState,
    contentPadding = PaddingValues(40.dp),
    reverseLayout = true
) {
    //...
}
© www.soinside.com 2019 - 2024. All rights reserved.