Android删除EditText中的整个spannable文本

时间:2017-11-09 02:11:45

标签: java android android-edittext spannablestring

我正在尝试在群聊中为我的Android应用程序构建类似WhatsApp标记人物功能的功能。我创建了一个EditText,只要用户点击上面表格行中的人员,就会在EditText中突出显示指定的字符,如下图所示。 EditText中的原始文本将替换为HTML代码,以便在EditText中突出显示

<font color='#0659F4'>@</font><font color='#03A9F4'>displayName</font>

Tag group participant in chat screen

我正在尝试将删除标记整体实现(例如: @Tester Phone )当用户删除 @Tester Phone 中突出显示的文本中的任何单个字符时b>的EditText

我试图存储每个标签的起始索引和结束索引并听取 EditText 光标位置更改事件,以便我决定删除哪个标记字但是我仍然无法实现我的期望。

感谢是否有任何建议或实施方法。

2 个答案:

答案 0 :(得分:0)

在返回的跨度列表中,您可以获得每个字符串的长度。检查是否有任何长度的字符串更改并删除该字符串的跨度

答案 1 :(得分:0)

我认为您可以将@xxx设为span类。 喜欢

class MentionSpan{
    int start;
    int end;
    String text;
}

然后您可以通过spannablestring.getSpans(start,end,MentionSpan.class)找到所有@目标

删除字符后,检查光标是否在MentionSpans旁边,如果是,则使用SpannableStringBuilder.delete(start,end)删除整个提及范围