Я использую Jetpack Compose и у меня есть LazyColumn для отображения сообщений чата. Макет расположен в обратном порядке (reverseLayout = true), поэтому новые сообщения появляются внизу. Однако когда я использую ключ для каждого элемента (на основе message.id), последнее сообщение не остается внизу, как ожидалось. Без использования ключа все работает нормально. Но когда я использую ключ, он застревает в сообщении в области просмотра, заполненном элементами, поэтому не прокручивается, я имею в виду, что новый элемент не внизу, чтобы переместить старый элемент вверх при использовании ключа.
@Composable
fun LazyColumnWithAddItemButton() {
// State to hold the list of messages (items)
val messages = remember { mutableStateListOf("Message 1", "Message 2", "Message 3") }
// LazyListState to track scroll position
val lazyListState = rememberLazyListState()
// Button click handler to add a new message
val addMessage = {
messages.add("Message ${messages.size + 1}")
}
// Box allows us to layer the LazyColumn and Button, with the button fixed at the bottom
Box(
modifier = Modifier.fillMaxSize()
) {
// LazyColumn with reverseLayout = true
LazyColumn(
state = lazyListState,
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 72.dp) // Add padding to ensure button is not overlapped
.align(alignment = Alignment.BottomCenter),
contentPadding = PaddingValues(horizontal = 16.dp),
reverseLayout = true // Reverse layout so the first item is at the bottom
) {
items(messages.reversed(), key = {it}) { message ->
Text(
text = message,
modifier = Modifier
.fillMaxWidth()
.padding(8.dp)
.background(Color.LightGray)
.padding(16.dp)
)
}
}
// Button fixed at the bottom of the screen
Button(
onClick = {
addMessage() // Add new message to the list
},
modifier = Modifier
.fillMaxWidth()
.align(Alignment.BottomCenter) // Position button at the bottom
.padding(16.dp)
) {
Text("Add New Message")
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-to-botto
Обратный макет LazyColumn с ключом не работает - автоматическое прикрепление нового сообщения внизу ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение