我正在显示文本的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文件中。

其他回答

把maxLines和滚动条内TextView在xml。

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:maxLines="5" // any number of max line here.
    />

然后是java代码。

textView。setMovementMethod(新ScrollingMovementMethod ());

简单。我是这样做的:

XML Side: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" tools:context="com.mbh.usbcom.MainActivity"> <TextView android:id="@+id/tv_log" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="vertical" android:text="Log:" /> </RelativeLayout> Java side: tv_log = (TextView) findViewById(R.id.tv_log); tv_log.setMovementMethod(new ScrollingMovementMethod());

奖金:

为了让文本视图在文本填充时向下滚动,你必须添加:

    android:gravity="bottom"

到TextView xml文件。当输入更多文本时,它会自动向下滚动。

当然,你需要使用append函数来添加文本,而不是set text:

    tv_log.append("\n" + text);

我用它来记录日志。

我希望这对你有所帮助;)

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

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

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

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

实际上你不需要使用ScrollView。

只需设置

android:scrollbars = "vertical"

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

然后使用:

yourTextView。setMovementMethod(新ScrollingMovementMethod ());

在你的代码中。

对了,它滚动了!

我为此挣扎了一个多星期,终于想出了如何做到这一点!

我的问题是,所有内容都会以“块”的形式滚动。文本本身是滚动的,但不是一行一行地滚动。这显然对我不起作用,因为它会切断底部的线条。以前所有的解决方案都不适合我,所以我自己设计了一个。

这是目前为止最简单的解决方案:

在包中创建一个名为:'PerfectScrollableTextView'的类文件,然后复制并粘贴以下代码:

import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;

public class PerfectScrollableTextView extends TextView {

    public PerfectScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    public PerfectScrollableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    public PerfectScrollableTextView(Context context) {
        super(context);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        if(focused)
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    public void onWindowFocusChanged(boolean focused) {
        if(focused)
            super.onWindowFocusChanged(focused);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

最后改变你的“TextView”在XML:

来自:< TextView

: < com.your_app_goes_here.PerfectScrollableTextView