Flutter 中的 TextAffinity 是什么? 下游上游下游上游

如何解决Flutter 中的 TextAffinity 是什么? 下游上游下游上游

Flutter 中的 TextAffinity 枚举具有以下 documentation description

一种在 TextPosition 的偏移量可以匹配两个时消除歧义的方法 呈现的字符串中的不同位置。

例如,在渲染文本换行的偏移量处,有两个 偏移量可以表示的视觉位置:在 换行符(在第一行的末尾)和换行符之后的一个 (在第二行的开头)。文本亲和力消除歧义 在这两种情况之间。

这仅影响由换行引起的换行符,而不影响显式换行符 人物。对于换行符,位置完全由 单独的偏移量,没有歧义。

TextAffinity 也会影响之间的接口处的双向文本 LTR 和 RTL 文本。考虑以下字符串,其中小写 字母将显示为 LTR 和大写字母 RTL: “你好你好”。渲染时,字符串将在视觉上显示为 “你好OLLEH”。没有 5 的偏移量将是不明确的 对应的 TextAffinity。查看代码中的字符串,偏移量 表示紧接在“o”之后和紧接在“H”之前的位置。 渲染时,此偏移量可能位于字符串的中间 “o”的右侧或字符串的末尾 “H”。

这种说法是有道理的,但还是有点令人困惑。例如,“helloHELLO”实际上并不是双向文本。偏移 5 是如何模棱两可的?你有一个直观的例子吗?

我将在下面添加我的答案。

解决方法

TextAffinity 消除了软换行和双向文本边界的文本位置歧义。亲和力可以是上游或下游。下游是默认设置。

软包位置

给定最后一个字符软换行到下一行的字符串0123456789,您可以如下选择光标位置。两个位置都在偏移 9:

下游

enter image description here

上游

enter image description here

双向文本边界

给定字符串Helloשלום,其中Hello 是LRT 文本,שלום 是RTL 文本,您可以如下选择它们之间边界处的光标位置。两个位置都在偏移 5:

下游

enter image description here

上游

enter image description here

继续

我更详细地写了这个here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?