用于显示可滚动多行文本的最佳Android控件

时间:2014-08-11 14:23:52

标签: android android-layout

我开始在Android中编写电子书类型的程序,并且不知道Apple的UITextView的最佳替代方案。

它需要显示多行只读文本并且可以滚动。

1 个答案:

答案 0 :(得分:3)

您已经知道这个课程 - 它是TextView - 您可以将其调整为可滚动。

在XML视图模板中放置android:scrollbars="vertical"

<TextView 
    android:id="@+id/myText"
    android:scrollbars="vertical"

在java代码中放置:

mTextView = (TextView) findViewById(R.id.myText);
mTextView.setMovementMethod(ScrollingMovementMethod.getInstance());

如果您希望TextView在文字更改后自动滚动到底部,请添加如下代码:

mTextView.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {
        scrollToLastLine(mTextView);
    }

    private void scrollToLastLine(TextView tv) {
        int scrollY = 0;
        if (!TextUtils.isEmpty(tv.getText())) {
            final int linesCount = tv.getLineCount();
            if (linesCount > 0) {
                scrollY = Math.max(0,
                        tv.getLayout().getLineTop(linesCount)
                                - tv.getHeight());
            }
        }
        tv.scrollTo(0, scrollY);
    }
});