Я делаю простой калькулятор, дизайн которого похож на калькулятор Google. У меня есть текст с расчетами внутри HorizontalScrollView, и я хочу, чтобы он прокручивался до конца расчета при вводе. Я уже делал это с помощью этого кода (Котлин):
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 с scrollView:
<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 не закончил изменение, поэтому вы должны использовать post для прокрутки в следующем цикле выполнения.