如图所示,textview限制行数之后会出现上面这个问题,看了网上很多办法,有说先计算宽度然后手动截取字符串的,有自定义textview的。。但没人觉得这些方法很难用,或者根本用不了吗?
1.首先手动截取字符串,增加了代码量,而且不好维护。
2.自定义控件就更不用说了,效率低不说,bug还一堆。
我不相信google没有考虑到上面的情况,毕竟本身就有emoji表情,不可能没碰到上面的情况!于是只能去看textview源码,于是找了半天,发现textview里面又把计算的逻辑分到其他类了,主要代码是下面这个方法:
protected Layout makeSingleLayout(int wantWidth, BoringLayout.Metrics boring, int ellipsisWidth,
Layout.Alignment alignment, boolean shouldEllipsize, TruncateAt effectiveEllipsize,
boolean useSaved) {
Layout result = null;
if (mText instanceof Spannable) {
result = new DynamicLayout(mT