返回介绍

前言

发布于 2024-12-23 22:10:47 字数 686 浏览 0 评论 0 收藏 0

Android 控件中,看起来最简单、最基础的 TextView 实际上是很复杂的,很多常见的控件都是其子类,例如 Botton、EditText、CheckBox 等,由于作为一个基础控件类,TextView 需要考虑到子类的各种使用场景,满足子类的需求。源码中,TextView 单个类源码就多达 1 万行,而且其工作时还依赖很多辅助类。其文本的排版、折行处理,以及最终的显示,均是交给辅助类 Layout 类来处理的。

由于 Canvas 本身提供的 drawText 绘制文本是不支持换行的,所以在文本需要换行显示时,就需要用到 Layout 类。我们可以看到官方对 Layout 类的描述:

A base class that manages text layout in visual elements on the screen.

一个用于管理屏幕上文本布局的基类。

其直接子类有 StaticLayout、DynamicLayout、BoringLayout,在官方的文档中提到,如果文本内容会被编辑,应该使用 DynamicLayout,如果文本显示之后不会发生改变,应该使用 StaticLayout,而 BoringLayout 则使用场景极为有限:当你确保你的文本只有一行,且所有的字符均是从左到右显示的(某些语言的文字是从右到左显示的),你才可以使用 BoringLayout。

本文将会简单地深入 StaticLayout 的源码,分析下具体是如何工作的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文