scrollVIew.fullScroll(Horizo​​ntalScrollView.FOCUS_RIGHT)不会滚动到结束

时间:2018-06-22 13:21:27

标签: android kotlin horizontalscrollview kotlin-android-extensions

我正在制作简单的计算器,其设计与Google的计算器相似。我在Horizo​​ntalScrollView中包含带有计算的文本,并且我希望在键入时将其滚动到计算的末尾。我已经用这段代码(科特琳)做到了:

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) {}
    })

这是带有scrollView的.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>

这有点奏效,当文本更新时,文本滚动到上一个聊天记录之前,而不是最后一个。有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

只需使用performBatchUpdates()来执行fullScroll:

post

这是因为在textView.post { scrollVIew.fullScroll(HorizontalScrollView.FOCUS_RIGHT) } 回调中,textView的文本尚未完成更改,因此您应该使用afterTextChanged在下一个运行循环中进行滚动。