在安卓系統中插入表情到光標位置的代碼詳解
前言
之前寫的一個Android應用,在回復帖子插入表情的時候存在一個BUG,就是無法在EditText中指定的光標處插入表情字符串,每次添加的表情字符串都跑到了文字末尾。分析了一下apk源碼,發(fā)現是在表情盤的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()); }
相關文章
Servlet關于RequestDispatcher的原理詳解
這篇文章主要介紹了Servlet關于RequestDispatcher的原理詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11使用Prometheus+Grafana的方法監(jiān)控Springboot應用教程詳解
這篇文章主要介紹了用Prometheus+Grafana的方法監(jiān)控Springboot應用,本文通過實例代碼詳解給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03Java常用類庫StringBuffer,Runtime,日期操作類等類庫總結
這篇文章主要介紹了Java常用類庫StringBuffer,Runtime,日期操作類等類庫總結,需要的朋友可以參考下2020-02-02Spring中的NamespaceHandler加載過程源碼詳解
這篇文章主要介紹了Spring中的NamespaceHandler加載過程源碼詳解,Spring提供的NamespaceHandler的處理機制,簡單來說就是命名空間處理器,Spring為了開放性提供了NamespaceHandler機制,這樣我們就可以根據需求自己來處理我們設置的標簽元素,需要的朋友可以參考下2024-02-02