欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在安卓系統(tǒng)中插入表情到光標(biāo)位置的代碼詳解

 更新時間:2015年07月31日 10:45:42   作者:低調(diào)小一  
這篇文章主要介紹了在安卓系統(tǒng)中插入表情到光標(biāo)位置的代碼詳解,利用Java代碼在EditText控件中實(shí)現(xiàn),需要的朋友可以參考下

前言
    之前寫的一個Android應(yīng)用,在回復(fù)帖子插入表情的時候存在一個BUG,就是無法在EditText中指定的光標(biāo)處插入表情字符串,每次添加的表情字符串都跑到了文字末尾。分析了一下apk源碼,發(fā)現(xiàn)是在表情盤的onClick響應(yīng)事件中沒有正確處理表情字符串的添加方法,這里記錄一下如何在EditText指定光標(biāo)處插入表情字符串。

EditText光標(biāo)處插入表情字符串的方法
    既然是在EditText控件中插入表情字符串,那首先需要獲取EditText控件對象,示例源碼如下:

  EditText rEditText = (EditText) findViewById(R.id.r_edittext); 

    獲取了當(dāng)前EditText控件對象,下一步是要保存當(dāng)前EditText中已有的字符串,示例源碼如下:

  String oriContent = rEditText.getText().toString(); 

    接下來,就是要獲取光標(biāo)的位置了。使用EditText控件提供的getSelectionStart()方法。但是,這里需要注意的是,當(dāng)EditText中沒有光標(biāo)時,使用該方法將返回-1,這顯然不是我們想要的光標(biāo)位置,因此最好和0再做個比較,示例源碼如下:

  int index = Math.max(rEditText.getSelectionStart(), 0); 

    剩下的,就是在給定的光標(biāo)位置插入表情字符串了,然后再設(shè)置新的光標(biāo)位置。完整的插入表情示例源碼如下:

  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()); 
  } 

相關(guān)文章

  • jdk動態(tài)代理和cglib動態(tài)代理詳解

    jdk動態(tài)代理和cglib動態(tài)代理詳解

    本篇文章主要介紹了深度剖析java中JDK動態(tài)代理機(jī)制 ,動態(tài)代理避免了開發(fā)人員編寫各個繁鎖的靜態(tài)代理類,只需簡單地指定一組接口及目標(biāo)類對象就能動態(tài)的獲得代理對象
    2021-07-07
  • Servlet關(guān)于RequestDispatcher的原理詳解

    Servlet關(guān)于RequestDispatcher的原理詳解

    這篇文章主要介紹了Servlet關(guān)于RequestDispatcher的原理詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 使用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用教程詳解

    使用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用教程詳解

    這篇文章主要介紹了用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用,本文通過實(shí)例代碼詳解給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Java常用類庫StringBuffer,Runtime,日期操作類等類庫總結(jié)

    Java常用類庫StringBuffer,Runtime,日期操作類等類庫總結(jié)

    這篇文章主要介紹了Java常用類庫StringBuffer,Runtime,日期操作類等類庫總結(jié),需要的朋友可以參考下
    2020-02-02
  • Java 安全模型,你了解了嗎

    Java 安全模型,你了解了嗎

    這篇文章主要介紹了Java 安全模型。Java的安全模型是其多個重要結(jié)構(gòu)特點(diǎn)之一,它使Java成為適用于網(wǎng)絡(luò)環(huán)境的技術(shù)。Java安全模型側(cè)重于保護(hù)終端用戶免受從網(wǎng)絡(luò)下載的、來自不可靠來源的、惡意程序(以及善意程序中的bug)的侵犯。,需要的朋友可以參考下
    2019-06-06
  • Java進(jìn)階必備之多線程編程

    Java進(jìn)階必備之多線程編程

    今天帶大家來學(xué)習(xí)java多線程編程,文中有非常詳細(xì)的代碼示例及介紹,對正在學(xué)習(xí)java多線程的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java實(shí)現(xiàn)的簡單數(shù)字處理類及用法示例

    Java實(shí)現(xiàn)的簡單數(shù)字處理類及用法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的簡單數(shù)字處理類及用法,涉及java數(shù)字運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Json 自定義使用函數(shù)的簡單實(shí)例

    Json 自定義使用函數(shù)的簡單實(shí)例

    下面小編就為大家?guī)硪黄狫son 自定義使用函數(shù)的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Spring中的NamespaceHandler加載過程源碼詳解

    Spring中的NamespaceHandler加載過程源碼詳解

    這篇文章主要介紹了Spring中的NamespaceHandler加載過程源碼詳解,Spring提供的NamespaceHandler的處理機(jī)制,簡單來說就是命名空間處理器,Spring為了開放性提供了NamespaceHandler機(jī)制,這樣我們就可以根據(jù)需求自己來處理我們設(shè)置的標(biāo)簽元素,需要的朋友可以參考下
    2024-02-02
  • java性能調(diào)優(yōu)System的gc垃圾回收方法

    java性能調(diào)優(yōu)System的gc垃圾回收方法

    這篇文章主要為大家介紹了java性能調(diào)優(yōu)System的gc垃圾回收方法示例解析有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評論