刚启动时,将TextView自动滚动到Activity中的最后一行

时间:2015-03-02 11:14:15

标签: android android-intent android-edittext textview

在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);

2 个答案:

答案 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());
    }