我想创建一个可以通过用户触摸折叠的TextView。
当TextView折叠时,我设置了textView.setMaxLines(4);
。
如何在我的expand方法中清除此状态?
我只能将setMaxLines()
调用值为大数字,例如 10000 。
有更好的方法来实现这个吗?
答案 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上的镜像上查看源代码。
答案 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);
}
}