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

当前回答

对于一个垂直或水平滚动的TextView,其他一些答案的帮助,但我需要能够滚动两种方式。

什么最后工作是一个ScrollView与一个HorizontalScrollView里面,和一个TextView里面的HSV。它非常光滑,可以很容易地从一边到另一边或从上到下在一个滑动。它还只允许在一个方向上滚动,所以在向上或向下滚动时不会从一边跳到另一边。

禁用编辑和光标的EditText可以工作,但感觉很糟糕。每次滚动都会移动光标,甚至在100行的文件中也需要多次滑动才能从上到下或从一边到另一边。

使用setHorizontallyScrolling(true)可以工作,但没有类似的方法来允许垂直滚动,而且据我所知,它在ScrollView内部不起作用(尽管只是学习,可能是错误的)。

其他回答

下面的代码创建了一个自动水平滚动的textview:

同时添加TextView到xml使用

<TextView android:maxLines="1" 
          android:ellipsize="marquee"
          android:scrollHorizontally="true"/>

在onCreate()中设置TextView的以下属性

tv.setSelected(true);
tv.setHorizontallyScrolling(true); 

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

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

对我来说。约束布局。为2.3。

代码实现:

YOUR_TEXTVIEW.setMovementMethod(new ScrollingMovementMethod());

XML:

android:scrollbars="vertical"
android:scrollIndicators="right|end"

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

XML -你可以使用android: scrollhorizontal属性

是否允许文本比视图宽(因此可以水平滚动)。

可能是布尔值,如“true”或“false”。

Prigramacaly - setHorizontallyScrolling(boolean)