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

时间:2011-06-22 10:01:59

标签: android textview

我很难以编程方式重新设置maxLines的{​​{1}}属性。

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

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

已更新

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

5000

4 个答案:

答案 0 :(得分:54)

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

textView.setMaxLines(Integer.MAX_VALUE);

根据Valdemar的评论及此stackoverflow answer。使用-1将导致ArrayIndexOutOfBoundsException

请注意,根据documentation,只有ENDMARQEE setEllipsize()设置才会获得maxlines> = 2的尊重:

  

如果setMaxLines(int)用于设置两行或更多行,则为END和   仅支持MARQUEE *(其他椭圆化类型不支持   任何东西)。

答案 1 :(得分:-1)

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

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

这段代码显示,当未指定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);    
    }
}

答案 2 :(得分:-1)

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

答案 3 :(得分:-2)

如果您想只有一行,那么为什么不使用:

    txtView.setSingleLine(true);