scrollVIew.fullScroll(HorizontalScrollView.FOCUS_RIGHT) 没有滚动到结尾

scrollVIew.fullScroll(HorizontalScrollView.FOCUS_RIGHT) doesn't scroll to end

我正在制作简单的计算器,其设计与 Google 的计算器相似。我在 Horizo​​ntalScrollView 中有带有计算的文本,我希望它在键入时滚动到计算的末尾。我已经使用此代码 (Kotlin) 完成了此操作:

textView.addTextChangedListener(object : TextWatcher {

        override fun afterTextChanged(s: Editable) {
            scrollVIew.fullScroll(HorizontalScrollView.FOCUS_RIGHT)
        }

        override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
        override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
    })

这是带有滚动视图的 .xml 片段:

<HorizontalScrollView
    android:id="@+id/scrollVIew"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="0"
        android:textAlignment="textEnd"
        android:textSize="75sp" />
</HorizontalScrollView>

这有点管用,当文本更新时,文本会滚动到最后一个聊天者的前一个,但不会滚动到最后一个。有谁知道为什么?

只需使用 post 即可完成全卷动:

textView.post { scrollVIew.fullScroll(HorizontalScrollView.FOCUS_RIGHT) }

因为在afterTextChanged回调中,textView的文本还没有完成改变,所以你应该在下一个runloop中使用post来做滚动。