在Activity的开始我希望TextView向下滚动到可能的最后一行。
现在,当Activity开始时,我看到TextView显示了顶部的文本。 如何将TextView滚动到最后一行并从底部开始显示它?
我目前使用的代码
@Override
protected void initUI(Bundle savedInstanceState) {
logTextView = (EditText)findViewById( R.id.text );
ArrayList<Event> events = getAll();
StringBuilder sb = new StringBuilder(64*1024);
for (Event event : events) {
sb.append( event.toString() );
sb.append( "\n" );
}
logTextView.setText( sb );
logTextView.setKeyListener(null);
logTextView.setFocusable(true);
}
int y = (textView.getLineCount() - 1) * textView.getLineHeight(); // the " - 5" should send it to the TOP of the last line, instead of the bottom of the last line
int visible = logTextView.getHeight() - (2* logTextView.getLineHeight());
if( visible < y ) y -= visible;
logTextView.scrollTo(0, y);
答案 0 :(得分:0)
添加数据后输入以下代码:
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
答案 1 :(得分:0)
最后我找到了解决方案
这是代码
@Override
protected void initUI(Bundle savedInstanceState) {
logTextView = (EditText)findViewById( R.id.text );
ArrayList<Event> events = getAll();
StringBuilder sb = new StringBuilder(64*1024);
for (Event event : events) {
sb.append( event.toString() );
sb.append( "\n" );
}
logTextView.setText( sb );
logTextView.setKeyListener(null);
logTextView.setFocusable(true);
//This line triggers textView to scroll all the way down to the bottom.
logTextView.setSelection(logTextView.getText().length());
}