- CompoundButton 源码分析
- LinearLayout 源码分析
- SearchView 源码解析
- LruCache 源码解析
- ViewDragHelper 源码解析
- BottomSheets 源码解析
- Media Player 源码分析
- NavigationView 源码解析
- Service 源码解析
- Binder 源码分析
- Android 应用 Preference 相关及源码浅析 SharePreferences 篇
- ScrollView 源码解析
- Handler 源码解析
- NestedScrollView 源码解析
- SQLiteOpenHelper/SQLiteDatabase/Cursor 源码解析
- Bundle 源码解析
- LocalBroadcastManager 源码解析
- Toast 源码解析
- TextInputLayout
- LayoutInflater 和 LayoutInflaterCompat 源码解析
- TextView 源码解析
- NestedScrolling 事件机制源码解析
- ViewGroup 源码解析
- StaticLayout 源码分析
- AtomicFile 源码解析
- AtomicFile 源码解析
- Spannable 源码分析
- Notification 之 Android 5.0 实现原理
- CoordinatorLayout 源码分析
- Scroller 源码解析
- SwipeRefreshLayout 源码分析
- FloatingActionButton 源码解析
- AsyncTask 源码分析
- TabLayout 源码解析
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
概述
先看 StaticLayout 类的注释:StaticLayout 是一个为不可编辑的文本布局的类,这意味着一旦布局完成,文本内容就不可以改变,如果需要改变的话,应该使用 DynamicLayout 来布局。同时你不应该直接使用 StaticLayout 类,除非你需要实现一个自定义的控件或者自定义显示对象,否则,你应该直接调用 Canvas.drawText()
。因此,在正常的开发工作中,你接触 StaticLayout 的机会应该不多。
在 TextView 初始化时,会通过 makeNewLayout()
方法,根据文本的特点,是否包含 Span,是否单行等,决定创建具体的 Layout 类型。在单纯地使用 TextView 来展示静态文本的时候,创建的就是 StaticLayout。StaticLayout 的初始化是通过内部类 StaticLayout.Builder
完成的,然后调用 generate()
方法完成段落、折行以及缩进之类的处理,在 generate()
方法中调用了 out()
方法,完成文本显示的行距、顶部底部留白、省略文本等的处理,这两个方法也是 StaticLayout 源码中两个主要的方法,完成了一系列的文本处理。在 TextView 的 onDraw(Canvas canvas)
方法中,调用父类 Layout 的 draw()
方法,改方法会依次调用 drawBackground()
和 drawText()
完成背景和文本的绘制。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论