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

Val*_*mar 39 android textview

我很难maxLinesTextView编程方式重置属性.

刚尝试设置0,它不起作用.-1崩溃了应用程序.我可以使用更简单的解决方法并设置maxLines5000但我不想这样做.

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

更新

好吧,我发现了一个问题..我也设置了Ellipsize ......我将使用以下解决方法:

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);
Run Code Online (Sandbox Code Playgroud)

ale*_*mix 58

由于还没有批准的答案 - 重置TextView的maxlines属性的正确方法是:

textView.setMaxLines(Integer.MAX_VALUE);

根据Valdemar的评论和这个stackoverflow的答案.使用-1将导致ArrayIndexOutOfBoundsException.

请记住END,MARQEE根据文档,setEllipsize()设置将遵循maxlines> = 2 :

如果setMaxLines(int)用于设置两行或更多行,则仅支持END和MARQUEE*(其他ellipsizing类型不会执行任何操作).


ina*_*ruk -6

不应-1使您的应用程序崩溃。这实际上是TextView默认使用的:

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

这段代码表明,当android:maxLines未指定时,代码使用-1通过函数设置值setMaxLines()


我也做了测试应用来验证我的结论。而且它工作正常,不会崩溃:

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);    
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 刚刚在源代码中看到 private void applySingleLine(boolean singleLine, boolean applyTransformation) { mSingleLine = singleLine; if (singleLine) { ...} } else { setMaxLines(Integer.MAX_VALUE); 设置水平滚动(假);if (applyTransformation) { setTransformationMethod(null); } 实际上 maxLines 是 Integer.MAX_VALUE。(setMaxLines(Integer.MAX_VALUE);) (6认同)