ExpandableTextView源码分析
2017-09-27 09:28
309 查看
代码不多,看起来不复杂。https://github.com/Carbs0126/ExpandableTextView
1. 初始化的时候,监听布局完成。但是只监听一次。所以要 obs.removeOnGlobalLayoutListener(this);
2. 点击展开收起的效果,用的是富文本 ClickableSpan。
3. 展开收起的文字放在右下角,替换的原文字的个数,是不确定的,因为每个字符的宽度不一样。用measureText计算文字宽度。默认的个数是展开的字符串个数,然后在逼近
展开的字符宽度。
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计算文字宽度。默认的个数是展开的字符串个数,然后在逼近
展开的字符宽度。
相关文章推荐
- 开源项目ExpandableTextView使用和源码分析
- AutoCompleteTextView的使用和源码分析以及实现响应式输入提示功能
- android-autofittextview自适应字体大小源码分析。
- Titanic (带波纹效果的TextView)源码分析
- android Titanic (带波纹效果的TextView)源码分析(带源码)
- TextView 的新特性,Autosizing 到底是如何实现的? | 源码分析
- android:hint属性对TextView(或者EditText)的影响--源码分析
- TextView 的新特性,Autosizing 到底是如何实现的? | 源码分析
- Android应用层View绘制流程与源码分析
- Android控件TextView的实现原理分析
- RecyclerView 的 FastScroller 绘制的源码分析
- [置顶] 带你从源码角度分析ViewGroup中事件分发流程
- 自定义View系列教程04--Draw源码分析及其实践
- android开发布局优化—include、merge、viewstub源码分析总结
- TextView属性详细分析
- 自定义圆形头像CircleImageView的使用和源码分析
- androi View视图框架源码分析之一:android是如何创建一个view的
- Android 中View的绘制机制源码分析 一
- android ListView中view的复用源码分析
- 开源项目GridPasswordView使用和源码分析