我正在显示文本的TextView,似乎太长,以适合 在一个屏幕上。我需要使我的TextView可滚动。我该怎么办 了吗?

代码如下:

final TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.splash);
tv.setTypeface(face);
tv.setTextSize(18);
tv.setTextColor(R.color.BROWN);
tv.setGravity(Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL);
tv.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent e) {
        Random r = new Random();
        int i = r.nextInt(101);
        if (e.getAction() == e.ACTION_DOWN) {
            tv.setText(tips[i]);
            tv.setBackgroundResource(R.drawable.inner);
        }
        return true;
    }
});
setContentView(tv);

当前回答

在XML文本视图中添加以下内容。

android:scrollbars="vertical"

最后,加上

textView.setMovementMethod(new ScrollingMovementMethod());

Java文件中。

其他回答

没有必要写进去

android:Maxlines="AN_INTEGER"`

你可以简单地添加:

android:scrollbars = "vertical"

然后,把这段代码放到你的Java类中:

textview.setMovementMethod(new ScrollingMovementMethod());

当你完成了scrollable,当你在视图中输入任何东西时,将这一行添加到视图的最后一行:

((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);

上面的“专业提示”从某人某处(使TextView可滚动的Android)工作很好,然而,如果你动态添加文本到ScrollView,并希望自动滚动到底部后追加,只有当用户在ScrollView底部?(也许是因为如果用户已经向上滚动阅读了一些内容,你不想在追加过程中自动重置到底部,这很烦人。)

总之,是这样的:

if ((mTextStatus.getMeasuredHeight() - mScrollView.getScrollY()) <=
        (mScrollView.getHeight() + mTextStatus.getLineHeight())) {
    scrollToBottom();
}

mTextStatus.getLineHeight()将使你不scrollToBottom()如果用户是在一行从ScrollView的结束。

实际上你不需要使用ScrollView。

只需设置

android:scrollbars = "vertical"

你的TextView属性在你的布局的xml文件。

然后使用:

yourTextView。setMovementMethod(新ScrollingMovementMethod ());

在你的代码中。

对了,它滚动了!

以下是JetPack Compose美妙而快乐的世界中的答案:

LazyColumn {
        item {
            Text(
                text = "My Long Text"
            )
        }
    }