如何完全防止滚动TextView?

我有一个TextView与大量的文字。 这个TextView具有maxLines设置,所以它只显示前8行左右。 我也有一个“阅读更多”button,所以我自己处理扩展TextView。

我的问题是,有时TextView会滚动一点(一次只有一行),即使我从来没有指定任何滚动条。 这个问题变得更糟,因为TextView是在一个ListView里面的,所以当用户滚动ListView的时候,TextView有时会滚动一下,就像这样:

blahblah

如何防止TextView滚动?

我有同样的问题,我的解决scheme是创build一个NoScrollTextView像这样扩展TextView

  public class NoScrollTextView extends TextView { public NoScrollTextView(Context context) { super(context); } public NoScrollTextView(Context context, AttributeSet attrs) { super(context, attrs); } public NoScrollTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public NoScrollTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override public void scrollTo(int x, int y) { //do nothing } } 

设置scrollTo什么也不做

所以我做了一些小小的研究,我不认为这很简单,只是禁用滚动,但是有几件事情可以做/尝试。

第一个是setEnabled(false),但这将禁用链接并更改文本颜色。

第二,我build议尝试使用scrollTo(int x,int y)方法。 在设置TextView的文本之后,只要scrollTo(0,0),我的猜测是大文本是唯一引起滚动的东西,所以这应该能够照顾它。

第三个答案我发现,你可以尝试是一个更复杂一点,不完全是你的问题,但它可能会为你工作可以在这里find。

 public class LinkMovementMethodOverride implements View.OnTouchListener{ @Override public boolean onTouch(View v, MotionEvent event) { TextView widget = (TextView) v; Object text = widget.getText(); if (text instanceof Spanned) { Spanned buffer = (Spanned) text; int action = event.getAction(); if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { int x = (int) event.getX(); int y = (int) event.getY(); x -= widget.getTotalPaddingLeft(); y -= widget.getTotalPaddingTop(); x += widget.getScrollX(); y += widget.getScrollY(); Layout layout = widget.getLayout(); int line = layout.getLineForVertical(y); int off = layout.getOffsetForHorizontal(line, x); ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class); if (link.length != 0) { if (action == MotionEvent.ACTION_UP) { link[0].onClick(widget); } else if (action == MotionEvent.ACTION_DOWN) { // Selection only works on Spannable text. In our case setSelection doesn't work on spanned text //Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0])); } return true; } } } return false; } } 

“之后,将其作为触摸监听器应用于目标文本视图: –

textview.setOnTouchListener(new LinkMovementMethodOverride());“

在xml中尝试这些代码行

 android:isScrollContainer="false" android:ellipsize="end" 

我需要像在我的项目中看到更多的function,我从这个SOpost使用椭圆化textview 。 它的作用就像一个魅力,并提供一个接口,检查文本是否被椭圆化。 这应该做的伎俩。

只要使用setMinLines()总是显示整个文本