在公司开发过程中,需要用到固定行数的展开查看更多的控件,在网上找了好久,都没有找到,于是花了半天时间实现了一个,在此做下记录,主要有几个关键的地方:
private Layout makeTextLayout(String text) {
return new StaticLayout(text, getPaint(), getWidth() - getPaddingLeft() - getPaddingRight(),
Layout.Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);
}
生成StaticLayout 对象,通过它就可以知道有多少行和每一行最后及最前一位字符对应的文本Sring的下标,通过对它进行裁剪,即可实现固定显示多少行。
完整代码如下:
/**
* 固定行数展开收缩控件
* Created by evan on 2016/3/3.
*/
public class FolderTextView extends TextView{
private static final String ELLIPSIS="...";
private static final String FOLD_TEXT = "收缩";
private static final String UNFOLD_TEXT = "查看详情";
/**
* 收缩状态
*/
private boolean isFold = false;
/**