java - 使用 Spans 获取 EditText 的左侧部分文本

标签 java android split android-edittext spannablestring

我的 Android 应用程序的布局中有一个 EditText。

EditText 可以包含带有可选 ImageSpan 的文本。

在某个时刻,用户可以执行一些编辑,即可以编辑文本和/或删除跨度。

我得到插入符位置

 int caretPosition= editText.getSelectionStart();

此时我需要知道左侧的文本,没有跨度。

我的意思是,如果左侧不存在跨度,则返回的文本正是预期的,而如果存在一些跨度,则文本没有空格或其他字符来代替跨度。

示例

aaaaaaaaaaa<span>bbbbbb<span>cccc_dddddd<span>eeeeee

这里的字符 _ 代表光标位置(但它没有任何空格)。

我的目标是得到这个字符串:

aaaaaaaaaaabbbbbbcccc

这很困难,因为看起来跨度就像一个字符,但我不确定。而且我不知道如何拆分可编辑项以在左侧部分进行迭代。

如何实现这一目标?

最佳答案

我认为这就是解决方案:

int caretPosition=editText.getSelectionStart();
Spannable spannable=editText.getText();
String leftPartWithoutSpans=spannable.subString(0,caretPosition).toString();

关于java - 使用 Spans 获取 EditText 的左侧部分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59879335/

相关文章:

java - 添加重复项时,如何更新 TableView 中的行(而不是添加新行)? [JavaFX]

android - Firebase 为什么从节点下载所有数据??即使有时间戳

Java RegEx 拆分匹配并包含尾随字符

list - F# - 将列表拆分为奇偶列表元组(按元素,而不是位置)

java - Spring Hibernate 保存/提交事务而不调用 Save 方法

具有太多属性的java编辑对象

java - 如何将 Selenium Testng (java) 与 Testrail 测试用例集成

java - 空指针异常变量

java - ActionBarSherlock 中的 SearchView 折叠动画

list - F#:递归函数:将列表分为两个相等的部分