重置Android textview maxlines

时间:2011-03-24 00:36:37

标签: android textview

我想创建一个可以通过用户触摸折叠的TextView。 当TextView折叠时,我设置了textView.setMaxLines(4);。 如何在我的expand方法中清除此状态? 我只能将setMaxLines()调用值为大数字,例如 10000

有更好的方法来实现这个吗?

2 个答案:

答案 0 :(得分:96)

实际上,android平台的做法是将MaxLine设置为Integer.MAX_VALUE。

textView.setMaxLines(Integer.MAX_VALUE);

另外,如果您使用的是Ellipsize,请不要忘记设置为null。

textView.setEllipsize(null);

只是检查android框架是如何做到的;)观察setMaxLines(Integer.MAX_VALUE);

private void applySingleLine(boolean singleLine, boolean applyTransformation) {
    mSingleLine = singleLine;
    if (singleLine) {
        setLines(1);
        setHorizontallyScrolling(true);
        if (applyTransformation) {
            setTransformationMethod(SingleLineTransformationMethod.getInstance());
        }
       } else {
            setMaxLines(Integer.MAX_VALUE);
            setHorizontallyScrolling(false);
            if (applyTransformation) {
                 setTransformationMethod(null);
        }
       }
     }

您可以在Android开源项目(AOSP)的源代码中找到它

https://source.android.com/source/downloading

如果您不想下载源代码,可以在github上的镜像上查看源代码。

https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/widget/TextView.java

答案 1 :(得分:4)

试试这个( infoView.getLineCount()):

public void onMoreClick(View v) {
    Button btn = (Button) v;
    if(!moreSwitcher) {
        infoView.setMaxLines(infoView.getLineCount());
        infoView.setLines(infoView.getLineCount());
        moreSwitcher = true;
        btn.setText(R.string.collapse);
    }else{
        infoView.setMaxLines(5);
        infoView.setLines(5);
        moreSwitcher = false;
        btn.setText(R.string.expand);
    }
}