返回介绍

概述

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

先看 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 技术交流群。

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

发布评论

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