当前位置: 移动技术网 > IT编程>开发语言>Java > 在安卓系统中插入表情到光标位置的代码详解

在安卓系统中插入表情到光标位置的代码详解

2019年07月22日  | 移动技术网IT编程  | 我要评论

前言
    之前写的一个android应用,在回复帖子插入表情的时候存在一个bug,就是无法在edittext中指定的光标处插入表情字符串,每次添加的表情字符串都跑到了文字末尾。分析了一下apk源码,发现是在表情盘的onclick响应事件中没有正确处理表情字符串的添加方法,这里记录一下如何在edittext指定光标处插入表情字符串。

edittext光标处插入表情字符串的方法
    既然是在edittext控件中插入表情字符串,那首先需要获取edittext控件对象,示例源码如下:

  edittext redittext = (edittext) findviewbyid(r.id.r_edittext); 

    获取了当前edittext控件对象,下一步是要保存当前edittext中已有的字符串,示例源码如下:

  string oricontent = redittext.gettext().tostring(); 

    接下来,就是要获取光标的位置了。使用edittext控件提供的getselectionstart()方法。但是,这里需要注意的是,当edittext中没有光标时,使用该方法将返回-1,这显然不是我们想要的光标位置,因此最好和0再做个比较,示例源码如下:

  int index = math.max(redittext.getselectionstart(), 0); 

    剩下的,就是在给定的光标位置插入表情字符串了,然后再设置新的光标位置。完整的插入表情示例源码如下:

  private void insertemotion(string insertemotion) { 
    string oricontent = redittext.gettext().tostring(); 
    int index = math.max(redittext.getselectionstart(), 0); 
    stringbuilder sbuilder = new stringbuilder(oricontent); 
    sbuilder.insert(index, insertemotion); 
    redittext.settext(sbuilder.tostring()); 
    redittext.setselection(index + insertemotion.length()); 
  } 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网