scrollVIew.fullScroll(HorizontalScrollView.FOCUS_RIGHT) 没有滚动到结尾
scrollVIew.fullScroll(HorizontalScrollView.FOCUS_RIGHT) doesn't scroll to end
我正在制作简单的计算器,其设计与 Google 的计算器相似。我在 HorizontalScrollView 中有带有计算的文本,我希望它在键入时滚动到计算的末尾。我已经使用此代码 (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
来做滚动。
我正在制作简单的计算器,其设计与 Google 的计算器相似。我在 HorizontalScrollView 中有带有计算的文本,我希望它在键入时滚动到计算的末尾。我已经使用此代码 (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
来做滚动。