对于Exui文本自适应的见解

EXUI目前不支持文本自适应宽度
比如:图标列表,超列,列表,饼控图
这些如果遇到超出指定列(及容器)宽度的文本则会直接溢出,导致看不到后面的内容

目前由三种实现文本自适应的方法:

  1. 死等Exui更新解决
  2. 在文本溢出的地方增加省略号,添加提示框
  3. 在文本溢出的地方添加换行符

这里我提供以下第三种方法的实现思路:

P:我们可以使用逐字分割文本,循环累加测量文本的宽度,当文本宽度超出文本容器的宽度时在位置添加换行符,如果有特殊需求可以添加自适应容器高度

以下给大家作代码演示:

版本 2
支持库 ExuiKrnln

.子程序 文本自适应列宽, 文本型, , 在文本需要换行的地方加入换行符
.参数 列表文本容器的最大宽度, 整数型
.参数 文本字体, 字节集
.参数 传入文本, 文本型
.参数 偏移量, 整数型, 可空
.局部变量 局_文本宽度_总, 整数型
.局部变量 局_文本数组, 文本型, , “0”
.局部变量 局_文本分割后的数组, 文本型, , “0”
.局部变量 局_计次, 整数型
.局部变量 局_当前循环文本宽度累加, 整数型
.局部变量 局_临时_单字当前文本宽度, 整数型

测量文本Ex (传入文本, 文本字体, , , , , , , , , 局_文本宽度_总, )
.判断开始 (局_文本宽度_总 ≤ 列表文本容器的最大宽度)
返回 (传入文本)
.默认

.判断结束
文本_逐字分割_汇编 (传入文本, 局_文本数组)
.计次循环首 (取数组成员数 (局_文本数组), 局_计次)
测量文本Ex (局_文本数组 [局_计次], 文本字体, , , , , , , , , 局_临时_单字当前文本宽度, )
局_当前循环文本宽度累加 = 局_当前循环文本宽度累加 + 局_临时_单字当前文本宽度
.判断开始 (局_当前循环文本宽度累加 = 列表文本容器的最大宽度)
局_文本分割后的数组 = 分割文本 (传入文本, 局_文本数组 [局_计次 + 偏移量], )
返回 (局_文本分割后的数组 [1] + 局_文本数组 [局_计次 + 偏移量] + #换行符 + 局_文本分割后的数组 [2])
.默认

.判断结束
.判断开始 (局_当前循环文本宽度累加 > 列表文本容器的最大宽度)
局_文本分割后的数组 = 分割文本 (传入文本, 局_文本数组 [局_计次 + 偏移量 - 1], )
返回 (局_文本分割后的数组 [1] + 局_文本数组 [局_计次 + 偏移量 - 1] + #换行符 + 局_文本分割后的数组 [2])
.默认

.判断结束
.判断开始 (局_文本宽度_总 = 局_当前循环文本宽度累加)
跳出循环 ()
.默认

.判断结束

.计次循环尾 ()
返回 (传入文本 + #换行符)

.子程序 逐字分割, 整数型, 公开
.参数 参_内容, 文本型
.参数 参_文本数组, 文本型, 数组
.局部变量 back, 文本型

back = 取空白文本 (取文本长度 (参_内容) × 2)
置入代码 ({ 139, 69, 8, 139, 48, 139, 125, 252, 172, 168, 128, 117, 26, 60, 32, 116, 247, 60, 9, 116, 243, 60, 13, 116, 239, 60, 10, 116, 235, 132, 192, 116, 28, 170, 176, 9, 170, 235, 225, 60, 161, 117, 10, 134, 224, 172, 60, 161, 116, 214, 134, 224, 78, 170, 172, 170, 176, 9, 170, 235, 203, 49, 192, 170 })
参_文本数组 = 分割文本 (back, 到文本 ({ 9 }), )
返回 (取数组成员数 (参_文本数组))

 

声明:
1本站鼓励用户发布原创内容,但并不保证每个人都遵守这一点,若内容侵犯了你的权益可联系管理员删除!
2本站资源,除文章特别指明外,均限定下载者本人使用,禁止二次 转载 传播 分发!
3本站资源多为第三方用户投稿,大家下载资源前仔细甄别需求与其描述是否可达预期 除非较明显的与说明不符资源外的纠纷尽量与作者点对点直接解决
4资源提供者发布作品请提供作品详细说明 与 截图 源码作品若引用了 其它模块或依赖请诚实说明 明细与版本!以及依赖是否开源。尽量做到资源下载后 可以直接使用与运行
5本站资源会员享受折扣 开一个吧只有这个才是站长能拿到手的