在光标处插入特殊字符

//将特殊字符插入到EditText 中显示

int index = getSelectionStart();//光标位置

Editable editable = getText();//原先内容

SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(editable);

Spanned htmlText = Html.fromHtml(String.format(String.format("" + insertContent + "", insertColor)));

spannableStringBuilder.insert(index, htmlText);

spannableStringBuilder.insert(index + htmlText.length(), "\b");

setText(spannableStringBuilder);

setSelection(index + htmlText.length() + 1);

实现特殊字符选中删除效果

/**

* 监听删除键

* 1.光标在话题后面,将整个话题内容删除

* 2.光标在普通文字后面,删除一个字符

*

*/

this.setOnKeyListener(new View.OnKeyListener() {

@Override

public boolean onKey(View v, int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_DEL && event.getAction() == KeyEvent.ACTION_DOWN) {

int selectionStart = getSelectionStart();

int selectionEnd = getSelectionEnd();

/**

* 如果光标起始和结束不在同一位置,删除文本

*/

if (selectionStart != selectionEnd) {

// 查询文本是否属于目标对象,若是移除列表数据

String tagetText = getText().toString().substring(

selectionStart, selectionEnd);

for (int i = 0; i < insertModelList.size(); i++) {

InsertModel object = insertModelList.get(i);

if (tagetText.equals(object.getInsertContent())) {

insertModelList.remove(object);

}

}

return false;

}

int lastPos = 0;

Editable editable = getText();

// 遍历判断光标的位置

for (int i = 0; i < insertModelList.size(); i++) {

String objectText = insertModelList.get(i).getInsertContent();

lastPos = getText().toString().indexOf(objectText, lastPos);

if (lastPos != -1) {

if (selectionStart != 0 && selectionStart >= lastPos && selectionStart <= (lastPos + objectText.length())) {

// 选中话题

setSelection(lastPos, lastPos + objectText.length());

// 设置背景色

editable.setSpan(new BackgroundColorSpan(BACKGROUND_COLOR), lastPos, lastPos + objectText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

return true;

}

}

lastPos += objectText.length();

}

}

return false;

}

});

设置点击特殊字符光标自动移动到特殊字符之后

/**

* 监听光标的位置,若光标处于话题内容中间则移动光标到话题结束位置

*

*/

@Override

protected void onSelectionChanged(int selStart, int selEnd) {

super.onSelectionChanged(selStart, selEnd);

if (insertModelList == null || insertModelList.size() == 0)

return;

int startPostion = 0;

int endPostion = 0;

String insertContent = "";

for (int i = 0; i < insertModelList.size(); i++) {

insertContent = insertModelList.get(i).getInsertContent();

startPostion = getText().toString().indexOf(insertContent);

endPostion = startPostion + insertContent.length();

if (startPostion != -1 && selStart > startPostion

&& selStart <= endPostion) {// 若光标处于话题内容中间则移动光标到话题结束位置

setSelection(endPostion);

}

}}

android微博表情条,类似新浪微博EditText,可@某人,#插入话题,表情相关推荐

  1. 类似新浪微博评论的 @ 及 #某话题# 功能的实现

    TYAttributedLabel是一个强大的属性文本控件.它支持富文本.图文混排显示:它支持行间距.字间距.自适应高度.指定行数:它支持添加高度自定义文本属性,支持添加属性文本.自定义链接,新增高亮 ...

  2. Android图文混排-实现EditText图文混合插入上传

    前段时间做了一个Android会议管理系统,项目需求涉及到EditText的图文混排,如图: 在上图的"会议详情"中,需要支持文本和图片的混合插入,下图演示输入的示例: 当会议创建 ...

  3. php文本框添加表情,仿微信在对话框文字中插入Emoji表情包

    场景 类似于微信聊天的一个对话框,要求可以使用EMOJI表情,对话框是一个div,通过改变contentEditable属性使得内容可以编辑. 问题 Emoji表情在页面中其实是GIF格式的IMG标签 ...

  4. android 微博字体高亮,安卓开发札记——高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现)...

    安卓开发笔记--高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现) 先让大家看下效果图,这个是我自己在闲暇时间仿写的新浪微博客户端: 今天来讲讲如何实现上图的效果,这里需要用到S ...

  5. Android TextView、EditText显示输入法自带表情,记录一下

    参考文章写在首位 Android emoji显示 嘿嘿,其实代码都没有变. 在Android系统中使用系统自带的emoji表情 这篇文章里介绍,emoji表情实际上是一组Unicode编码与一组表情描 ...

  6. 基于ssm+mysql的javaee微博博客系统,Java实现类似新浪微博网站、朋友圈分享系统

    基于SSM+mysql的javaee微博博客系统,Java实现类似新浪微博网站.朋友圈分享系统 主要技术 SpringBoot\SSM(两个版本都有) HTML.jQuery.HTML.CSS.JS ...

  7. android 微博tab,Android实现新浪微博客户端tab时遇到bug、

    问题解决了.详细看回答一楼.. 但是有一个新的问题出现了,那就是在对RadioGroup设置onTouchListener监听器的时候,一直触发不了事件..是因为RadioGroup设置不了触摸监听器 ...

  8. android EditText完美解决禁止输入法表情

    最近有个需求,需要评论的时候禁止输入法的表情输入.然后在网上各种找,发现有些人啊,也是服了,同样的东西反复写,并且还没解决问题,我就想问问,这个你们自己真的动手运行的了,效果实现了吗,还是说,效果实现 ...

  9. android仿微博头像_Android仿新浪微博个人信息界面及其他效果

    本教程为大家分享了Android微博个人信息界面设计代码,供大家参考,具体内容如下 如果你已经实现前面的功能那个这个人信息界面便是小菜一碟,此处不作叙述. 补充 1.时间处理类: 处理微博发出时间距现 ...

  10. 处理新浪微博中@ #等格式 蓝色高亮~ 表情 以及点击事件

    先上图看效果 表情只弄了一个,测试使用, 新浪微博接口中返回那么多表情 - -  还没处理,好像新浪微博客户端也有些没有处理到   正则不会处理#的问题 如 : 其他文字#要的#不要的#要的#其他文字 ...

最新文章

  1. java 人事_java版简易人事管理系统
  2. 2021春季学期-创新与实践-硬件平台硬件
  3. 使用Lombok简化你的代码
  4. lstm训练情感分析的优点_LSTM对电影评论进行简单的情感分析
  5. js使用const的好处_let和const命令
  6. Ubuntu系统上安装微信(legacy)
  7. 2020最新文本检测算法TextFuseNet
  8. 显著性测试(Friedman test, Post-hoc Nimenyi test以及可视化)
  9. 买了一个鼠标一个交换机,京东分别快递了发票
  10. spring源码:@Bean注解解析
  11. 验证码识别平台哪个好?
  12. Spring使用标签aop:aspectj-autoproxy 出的一些错
  13. 学会个人管理和自我管理必看的书籍推荐
  14. .to(device)和.cuda()设置GPU的区别
  15. 公关战之下,分裂的今日头条
  16. 全网最详细最基础的网络安全入门教程
  17. 电脑接通电源时不能睡眠休眠问题解决
  18. 【架构实战营】模块二 3.如何设计高可用架构?
  19. 数据分析(二)-zabbix/influxdb监控数据提取
  20. 制作U盘安装电脑系统教程 (图片操作详细步骤)

热门文章

  1. 新手用手机学黑客编程一秒变黑客
  2. coolfire的八篇入门文章(.txt)
  3. HTTP响应状态代码----客户端错误(400–499)
  4. [NLP]论文笔记-A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS
  5. Unity开发——CPU优化篇
  6. python科学计算库
  7. Java图书管理系统(控制台程序)
  8. java图书管理系统毕业设计_java图书管理系统毕业论文
  9. 郝斌老师C语言视频观感
  10. 使用非参数统计检验进行分析的指南