如何以编程方式禁用TextView maxLines?

我很难以编程方式maxLines TextViewmaxLines属性。

试图设置为0 ,它不起作用。 -1使应用程序崩溃。 我可以使用一个更简单的解决方法,并将maxLines设置为5000但我不想这样做。

任何想法如何做到这一点?

更新

那么,我发现了一个问题..我已经设置了椭圆大小…我只是要使用以下解决方法:

 TextView questionDetail = (TextView) mQuestionDetailHeader.findViewById(R.id.desc); questionDetail.setText(mCurrentQuestion.getQuestion()); questionDetail.setMaxLines(Integer.MAX_VALUE); //As in the android sourcecode questionDetail.setEllipsize(null); 

Solutions Collecting From Web of "如何以编程方式禁用TextView maxLines?"

由于还没有经过认可的答案 – 重置TextView maxlines属性的正确方法是:

textView.setMaxLines(Integer.MAX_VALUE);

根据Valdemar的评论和这个计算器的答案 。 使用-1将导致ArrayIndexOutOfBoundsException

请注意, MARQEE文档,只有ENDMARQEE setEllipsize()设置将在maxlines> = 2时被考虑:

如果setMaxLines(int)已经被用来设置两行或多行,END和MARQUEE *只被支持(其他的椭圆化types不会做任何事情)。

-1不应该崩溃你的应用程序。 这实际上是默认情况下在TextView使用的:

 case com.android.internal.R.styleable.TextView_maxLines: setMaxLines(a.getInt(attr, -1)); break; 

这段代码显示,当没有指定android:maxLines时,代码使用-1通过setMaxLines()函数设置值。


我也做了testing申请来validation我的结论。 它可以正常工作,而不会崩溃:

 public class HelloWorld extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); TextView text = (TextView)findViewById(R.id.text); text.setMaxLines(-1); } } 

要设置文本的maxLines,请使用mTextView.setMaxLines(0),或者必须对文本的高度进行编程测量,然后乘以最大行数。结果应该设置为textView的高度

如果你想只有一个单一的线,那么你为什么不使用:

  txtView.setSingleLine(true);