gpt4 book ai didi

android-jetpack-compose - Jetpack Compose - 滚动到列中的可组合焦点

转载 作者:行者123 更新时间:2023-12-04 11:13:01 26 4
gpt4 key购买 nike

我有这样的用户界面:

val scrollState = rememberScrollState()
Column(
modifier = Modifier
.fillMaxSize(1F)
.padding(horizontal = 16.dp)
.verticalScroll(scrollState)
) {

TextField(...)
// multiple textfields
TextField(
//...
modifier = Modifier.focusOrder(countryFocus).onFocusChanged {
if(it == FocusState.Active) {
// scroll to this textfield
}
},
)
}
我在此列中有多个 TextFields,当其中一个聚焦时,我想将 Column 滚动到它。 scrollState scrollState.smoothScrollTo(0f)中有一个方法但我不知道如何获得重点 TextField 位置。
更新:
看来我找到了一个可行的解决方案。我用过 onGloballyPositioned它有效。但我不确定这是否是解决此问题的最佳方法。
var scrollToPosition = 0.0F

TextField(
modifier = Modifier
.focusOrder(countryFocus)
.onGloballyPositioned { coordinates ->
scrollToPosition = scrollState.value + coordinates.positionInRoot().y
}
.onFocusChanged {
if (it == FocusState.Active) {
scope.launch {
scrollState.smoothScrollTo(scrollToPosition)
}
}
}
)

最佳答案

compose 中有一个新东西叫 RelocationRequester .那为我解决了问题。我的自定义 TextField 中有类似的内容。

val focused = source.collectIsFocusedAsState()
val relocationRequester = remember { RelocationRequester() }
val ime = LocalWindowInsets.current.ime
if (ime.isVisible && focused.value) {
relocationRequester.bringIntoView()
}

关于android-jetpack-compose - Jetpack Compose - 滚动到列中的可组合焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66249829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com