我对隐藏在键盘下的 TextField 有疑问,我在这里找到了类似问题的答案,但就我而言,它们对我没有帮助。我有一个 LazyColumn ,其中包含不同可组合项的列表,当我在窗口中没有足够的元素来激活滚动时,专注于 TextField 不会提升键盘上方的专注 TextField 。键盘只是隐藏它。我的代码:
val listState = rememberLazyListState()
typealias ComposableType = @Composable (Int) -> Unit
val uiList = listOf<ComposableType>( {IconButton}, {Text}, {CustomTextField(listState,it)}, {CustomTextField(listState,it)})
LazyColumn() {
itemsIndexed(uiList) { index, ui ->
ui.invoke(index)
}
}
val scope = rememberCoroutineScope()
@Composable
CustomTextField(scrollState: LazyListState, position: Int) {
OutlinedTextField(
modifier = Modifier.onFocusEvent { focusState ->
if (focusState.isFocused) {
scope.launch {
scrollState.animateScrollToItem(position)
}
}
)
}
因此,例如,如果我的 uiList 中有 10 个 CustomTextField,则当其中一个 TextField 被聚焦时,滚动就会起作用。但是当 uiList 中只有 2 个 TextField 时,关注其中任何一个都不会将它们提升到键盘上方。
我也尝试使用 RelocationRequester() 并使用带有滚动的 Column 而不是 LazyColumn,但都没有帮助。