Scrollview не полностью прокручивается

Я создаю чат-приложение, которое отображает текст ввода пользователем на экран с помощью scrollview. То, что я делаю, автоматически прокручивает scrollview вниз, поскольку к тексту добавляется больше текста. Я использую

 ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller);
 my_scrollview.fullScroll(ScrollView.FOCUS_DOWN);

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

Ответ 1

Я огляделся и обнаружил, что некоторые другие люди столкнулись с одной и той же проблемой.

Я решил эту проблему, используя этот кусок кода:

final ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view);

scrollView.post(new Runnable() 
{
    public void run() 
    {
        scrollView.fullScroll(View.FOCUS_DOWN);
    }
});

Надеюсь, это поможет кому-то там!

Ответ 2

Поздно, но может помочь кому-то с этой проблемой. Для добавления последнего элемента требуется около 200 минисекунд и обновить его для scrollView, чтобы это, безусловно, работало.

void scrollDown()
{
    Thread scrollThread = new Thread(){
        public void run(){
            try {
                sleep(200);
                ChatActivity.this.runOnUiThread(new Runnable() {
                    public void run() {
                        myScrollView.fullScroll(View.FOCUS_DOWN);
                    }    
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    scrollThread.start();
}

Просто вызовите scrollDown(); после добавления элемента в scrollView.