【问题标题】:Getting the left part text of an EditText with Spans使用 Spans 获取 EditText 的左侧部分文本
【发布时间】:2020-01-23 13:08:18
【问题描述】:

我的 Android 应用在其布局中有一个 EditText。

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

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

我得到插入符号的位置

 int caretPosition= editText.getSelectionStart();

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

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

例子

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

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

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

aaaaaaaaaaabbbbbbcccc

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

如何实现?

【问题讨论】:

  • 你有没有试过在将String从开始分割到选择开始后使用正则表达式?
  • @Nizar 如果你参考文本,它没有跨度的 HTML 部分
  • @Nizar 当您从 Editable 获取文本时,您也不会获得 spans 的 HTML,因此在搜索 spans 时您无需应用正则表达式。否则我不理解你的建议。尝试为答案编写一些代码。
  • 你能分享你的代码吗?我正在尝试重现类似的情况,但我不会接近你的情况
  • @Nizar 请看我的回答

标签: java android split android-edittext spannablestring


【解决方案1】:

我认为这是解决方案:

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

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多