滚动视图未完全向下滚动

2022-09-04 23:47:30

我正在构建一个类似聊天的应用程序,该应用程序使用滚动视图显示用户输入到屏幕上的文本。我正在做的是自动向下滚动视图,因为更多的文本被附加到屏幕上。我正在使用

 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

它很晚了,但可能会帮助一些人解决这个问题。添加最后一个元素并更新它以进行scrollView大约需要200毫秒,因此这肯定会起作用。

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();
}

只需在将元素添加到rollvView后调用即可。scrollDown();


推荐