我正在尝试在群聊中为我的Android应用程序构建类似WhatsApp标记人物功能的功能。我创建了一个EditText,只要用户点击上面表格行中的人员,就会在EditText中突出显示指定的字符,如下图所示。 EditText中的原始文本将替换为HTML代码,以便在EditText中突出显示
<font color='#0659F4'>@</font><font color='#03A9F4'>displayName</font>
我正在尝试将删除标记整体实现(例如: @Tester Phone )当用户删除 @Tester Phone 中突出显示的文本中的任何单个字符时b>的EditText
我试图存储每个标签的起始索引和结束索引并听取 EditText 光标位置更改事件,以便我决定删除哪个标记字但是我仍然无法实现我的期望。
感谢是否有任何建议或实施方法。
答案 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)删除整个提及范围