我正在显示文本的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);

当前回答

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

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

其他回答

这将提供一个滚动条平滑滚动文本。

ScrollView scroller = new ScrollView(this);
TextView tv = new TextView(this);
tv.setText(R.string.my_text);
scroller.addView(tv);

我没有发现TextView滚动来支持“抛”手势,在那里它继续滚动后,轻弹向上或向下。我最终自己实现了它,因为我不想使用ScrollView,因为各种原因,似乎没有一个MovementMethod可以让我选择文本和点击链接。

在kotlin使textview可滚动

myTextView.movementMethod= ScrollingMovementMethod()

并在XML中添加这个属性

    android:scrollbars = "vertical"

如果你使用Kotlin,如下所示: XML

 <TextView
            android:id="@+id/tvMore"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="3"
            android:scrollbars="vertical" />

活动

tvMore.movementMethod = ScrollingMovementMethod()

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

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