公司项目里需要中可收缩的textView,于是从gitHub上找了一个。项目需要在listView里使用这个控件。但是每个item里的文本长度是不确定的。有的需要伸缩,而有的文本没那么长根本不需要伸缩。
于是发现一个BUG。在展开第一个expandableTextView以后每隔几个item的expandableTextView就自动变高。高度正好是第一个展开的高度。直到有展开后高度更大的文本出现。
于是改用自己写的textVeiw来解决问题
原来很简单就是设置textView的maxLine来控制文本域的显示行数。
最关键的是如何获取当前textView的行数。一开始直接在lsitview的adapterd的getView里用textVIew.getCountLines。结果发现还是有BUG,第一次出现的时候并没有显示展开的按钮。而是第二次出现的时候才显示。分析下原因是因为。getCOuntLInes调用的时候当前ITEM还没绘制完成。也就是在现实它前一个ITEM的时候其实已经调用了下一个ITEM的getView方法。但是还没绘制所以getCountLInes返回值是0.结果根据代码0是比MAXLINES小的就不显示。
最后找到了viewTreeObserver这个类解决了这个问题。