您的位置:首页 > 其它

ExpandableTextView源码分析

2017-09-27 09:28 309 查看
代码不多,看起来不复杂。https://github.com/Carbs0126/ExpandableTextView


getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewTreeObserver obs = getViewTreeObserver();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
obs.removeOnGlobalLayoutListener(this);
} else {
obs.removeGlobalOnLayoutListener(this);
}
Log.d(TAG, "onGlobalLayout: ");
setTextInternal(getNewTextByConfig(), mBufferType);
}
});

1. 初始化的时候,监听布局完成。但是只监听一次。所以要 obs.removeOnGlobalLayoutListener(this);

2. 点击展开收起的效果,用的是富文本 ClickableSpan。

3. 展开收起的文字放在右下角,替换的原文字的个数,是不确定的,因为每个字符的宽度不一样。用measureText计算文字宽度。默认的个数是展开的字符串个数,然后在逼近

展开的字符宽度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: