gpt4 book ai didi

android - 无法使用ScrollTo滚动到Kotlin中TextView的自动中间

转载 作者:行者123 更新时间:2023-12-02 13:44:40 26 4
gpt4 key购买 nike

我在Java方面经验丰富,但是对Kotlin和Android开发是全新的(我希望学习Kotlin最终会有所返回)。在某些情况下,我希望可滚动的TextView自动滚动到文本 View 的某个位置,并在其他情况下滚动到底部。

我发现我可以使用scrollTo()方法滚动到所需的Y值。由于我的文本长度发生了变化,因此我找不到找到整个滚动textview的确切高度的方法。但是,我可以将行数乘以行高来找到合适的高度。因此,这将完美地工作。但是,行数不会立即更新,实际上,它似乎是在按下按钮以更新textview的整个事件完成之后才更新的。如果再次单击它,则文本滚动到适当的高度。看来我需要两次调用该方法,但是我感觉好像丢失了一些东西。第一次运行时,行数为0,滚动到高度为0,因此textview滚动到屏幕的最上方。

由于我没有使用ScrollView,也没有使用Java,因此关于Stack Overflow的许多其他答案似乎很有帮助,但并不相关。

谢谢,

日本电信

最佳答案

对于此类问题,其中在添加内容后元素的高度会发生变化,我将执行以下操作,并且由于您使用的是kotlin,因此会更容易。
View创建扩展函数以调用函数after,表示测量已完成(即内容已完全加载)。喜欢:

object ViewExtension {

// Extension function
inline fun <T : View> T.afterMeasureComplete(crossinline f: T.() -> Unit) {
viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
if (viewTreeObserver.isAlive) {
if (measuredWidth > 0 && measuredHeight > 0) {
viewTreeObserver.removeOnGlobalLayoutListener(this)
f()
}
}
}
})
}
}

然后在您的 Activity /片段
// import the extension function
import you.package.and.directory.util.ViewExtension.afterMeasureComplete

// Then after you have initialized your TextView, do this:
yourTextView.afterMeasureComplete {
// Now get the height of the text view, and scroll to your desired position
}

为我工作;)

关于android - 无法使用ScrollTo滚动到Kotlin中TextView的自动中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59960127/

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