如果使用 TextFields 作为子项,LazyColumn 不会滚动
LazyColumn does not scroll if using TextFields as child
@Composable
fun init() {
LazyColumn(Modifier.fillMaxSize()) {
for (i in 0..10) {
item { Box(Modifier.padding(15.dp)) { TextField("Hallo$i", modifier = Modifier.fillMaxWidth(), onValueChange = {}) } }
}
}
}
如果我有像这个带有文本字段的列表这样简单的东西
然后文本字段不会让我向下滚动列。
仅当我在文本字段旁边向下滚动时才有效。
还尝试使用 readonly/disabled 文本字段。
有没有办法克服这种行为?
也许是一种在滚动时禁用对文本字段的关注的方法?
我正在使用 jetbrains-compose 桌面版 (0.5.0-build245)
但也可以与 android 的 jetpack-compose 相同(未尝试)
目前,因为我没有找到任何其他解决方案,所以我将使用此解决方法
使用文本字段上方的不可见框并相应地更改状态
@Composable
fun init() {
LazyColumn(Modifier.fillMaxSize()) {
for (i in 0..10) {
item {
val isfocused = remember { mutableStateOf(false) }
val focusRequester = FocusRequester()
Box(Modifier.padding(15.dp)) {
TextField("Hallo$i", modifier = Modifier.fillMaxWidth().focusRequester(focusRequester).onFocusChanged {
isfocused.value = it.isFocused
}, onValueChange = {})
if (!isfocused.value)
Box(
modifier = Modifier
.matchParentSize()
.alpha(0f)
.clickable(onClick = {
isfocused.value = true
focusRequester.requestFocus()
}),
)
}
}
}
}
}
@Composable
fun init() {
LazyColumn(Modifier.fillMaxSize()) {
for (i in 0..10) {
item { Box(Modifier.padding(15.dp)) { TextField("Hallo$i", modifier = Modifier.fillMaxWidth(), onValueChange = {}) } }
}
}
}
如果我有像这个带有文本字段的列表这样简单的东西 然后文本字段不会让我向下滚动列。 仅当我在文本字段旁边向下滚动时才有效。 还尝试使用 readonly/disabled 文本字段。
有没有办法克服这种行为? 也许是一种在滚动时禁用对文本字段的关注的方法?
我正在使用 jetbrains-compose 桌面版 (0.5.0-build245) 但也可以与 android 的 jetpack-compose 相同(未尝试)
目前,因为我没有找到任何其他解决方案,所以我将使用此解决方法 使用文本字段上方的不可见框并相应地更改状态
@Composable
fun init() {
LazyColumn(Modifier.fillMaxSize()) {
for (i in 0..10) {
item {
val isfocused = remember { mutableStateOf(false) }
val focusRequester = FocusRequester()
Box(Modifier.padding(15.dp)) {
TextField("Hallo$i", modifier = Modifier.fillMaxWidth().focusRequester(focusRequester).onFocusChanged {
isfocused.value = it.isFocused
}, onValueChange = {})
if (!isfocused.value)
Box(
modifier = Modifier
.matchParentSize()
.alpha(0f)
.clickable(onClick = {
isfocused.value = true
focusRequester.requestFocus()
}),
)
}
}
}
}
}