Scrollview没有完全向下滚动

时间:2013-02-10 18:40:29

标签: java android scroll scrollview

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

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

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

3 个答案:

答案 0 :(得分:30)

我环顾四周,发现有些other people遇到了同样的问题。

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

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

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

答案 1 :(得分: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();
}

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

答案 2 :(得分:0)

        @Override
        public void onClick(View v) {

            scview_ashora = findViewById(R.id.scview_ashora);
            scview_ashora.fullScroll(ScrollView.FOCUS_DOWN);

            scview_ashora.postDelayed(new Runnable() {
                @Override
                public void run() {
                    //replace this line to scroll up or down
                    scview_ashora.fullScroll(ScrollView.FOCUS_DOWN);
                }
            }, 1000000L);


        }
    });