Scrollview没有完全向下滚动

Mal*_*ion 12 java android scroll scrollview

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

 ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller);
 my_scrollview.fullScroll(ScrollView.FOCUS_DOWN);
Run Code Online (Sandbox Code Playgroud)

这似乎有用,虽然由于某种原因,因为键盘通常在屏幕上聊天,当滚动视图向下滚动它并不完全 - 添加的最新文本视图不显示(你必须手动向下滚动到最新一).我该如何解决这个问题?

Mal*_*ion 32

我环顾四周,发现其他一些遇到了同样的问题.

我用这段代码解决了这个问题:

final ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view);
scrollView.post(new Runnable() {
    public void run() {
        scrollView.fullScroll(View.FOCUS_DOWN);
    }
});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助那里的人!

  • 起初不起作用,然后按照对另一个答案的评论中的建议使用“postDelayed”。 (2认同)

par*_*tkr 13

它的晚期可能会帮助一些人解决这个问题..添加最后一个元素并为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();
}
Run Code Online (Sandbox Code Playgroud)

scrollDown();向scrollView添加元素后调用.

  • 你也可以使用`my_scrollview.postDelayed(new Runnable(){...},200)` (5认同)