我正在构建一个类似聊天的应用程序,使用滚动视图显示用户输入到屏幕的文本。我正在做的是自动滚动滚动视图,因为更多文本被附加到屏幕上。我正在使用
ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller);
my_scrollview.fullScroll(ScrollView.FOCUS_DOWN);
这似乎有效,虽然由于某种原因,因为键盘通常在屏幕上聊天,当滚动视图向下滚动时它并不完全 - 添加的最新文本视图不会显示(你必须手动向下滚动)到最新的)。我该如何解决这个问题?
答案 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);
}
});