ScrollVIew.fullScroll (HorizontalScrollView.FOCUS_RIGHT) не прокручивается до конца

Я делаю простой калькулятор, дизайн которого похож на калькулятор 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>

И это вроде работает, текст прокручивается до предпоследнего чата при обновлении текста, но не в последний. Кто-нибудь знает почему?

3
0
593
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто используйте post для полной прокрутки:

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

Это потому, что в обратном вызове afterTextChanged текст textView не закончил изменение, поэтому вы должны использовать post для прокрутки в следующем цикле выполнения.

Другие вопросы по теме