我有一个用于在 Android 上运行的代码编辑器的 EditText。我正在对内容应用语法突出显示,除了 EditText 滚动到屏幕之外的大字符串之外,它运行良好 - 每次按键时语法突出显示都会应用于整个 Spannable。
有谁知道我如何只捕获用户可见的文本?
我只能想到基于光标位置的令人讨厌的黑客攻击,但当用户滚动时这会中断。
最佳答案
可以使用下面的函数来获取可见文本的偏移量。您输入编辑文本的原始 x,y 角,它将返回最近的文本偏移量(即字符位置)。
EditText et = ;
et.getOffsetForPosition(x, y);
一旦您知道可见文本的开始/结束,您就可以相应地设置跨度。如果您只是更改颜色(即不是高度/宽度),那么不应该有任何循环依赖。
关于android - 如何从 EditText 中仅获取可见文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113883/