如何在Android中以编程方式将ScrollView滚动到底部?
建议的代码
logScroll.scrollTo(0, logScroll.getBottom());
不起作用(滚动到开头的底部,而不是实际的底部).
布局如下:
填充代码如下:
@BindView(R.id.log_scroll) ScrollView logScroll; @BindView(R.id.log_text) TextView logText; private void log(String msg) { logText.append(new SimpleDateFormat( "HH:mm:ss ", Locale.US ).format(new Date()) + msg + "\n"); logScroll.scrollTo(0, logScroll.getBottom()); }
UPDATE
我读了一些答案并写道:
private void log(String msg) { logText.append(new SimpleDateFormat( "HH:mm:ss ", Locale.US ).format(new Date()) + msg + "\n"); //logScroll.scrollTo(0, logScroll.getBottom()); logScroll.fullScroll(View.FOCUS_DOWN); }
为什么比使用更糟post
?
如果要使用软键盘事件滚动到底部,请使用此选项:
scrollView.postDelayed(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } }, 100);
即时滚动:
scrollView.post(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } });