android微博表情条,类似新浪微博EditText,可@某人,#插入话题,表情
在光标处插入特殊字符
//将特殊字符插入到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,可@某人,#插入话题,表情相关推荐
- 类似新浪微博评论的 @ 及 #某话题# 功能的实现
TYAttributedLabel是一个强大的属性文本控件.它支持富文本.图文混排显示:它支持行间距.字间距.自适应高度.指定行数:它支持添加高度自定义文本属性,支持添加属性文本.自定义链接,新增高亮 ...
- Android图文混排-实现EditText图文混合插入上传
前段时间做了一个Android会议管理系统,项目需求涉及到EditText的图文混排,如图: 在上图的"会议详情"中,需要支持文本和图片的混合插入,下图演示输入的示例: 当会议创建 ...
- php文本框添加表情,仿微信在对话框文字中插入Emoji表情包
场景 类似于微信聊天的一个对话框,要求可以使用EMOJI表情,对话框是一个div,通过改变contentEditable属性使得内容可以编辑. 问题 Emoji表情在页面中其实是GIF格式的IMG标签 ...
- android 微博字体高亮,安卓开发札记——高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现)...
安卓开发笔记--高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现) 先让大家看下效果图,这个是我自己在闲暇时间仿写的新浪微博客户端: 今天来讲讲如何实现上图的效果,这里需要用到S ...
- Android TextView、EditText显示输入法自带表情,记录一下
参考文章写在首位 Android emoji显示 嘿嘿,其实代码都没有变. 在Android系统中使用系统自带的emoji表情 这篇文章里介绍,emoji表情实际上是一组Unicode编码与一组表情描 ...
- 基于ssm+mysql的javaee微博博客系统,Java实现类似新浪微博网站、朋友圈分享系统
基于SSM+mysql的javaee微博博客系统,Java实现类似新浪微博网站.朋友圈分享系统 主要技术 SpringBoot\SSM(两个版本都有) HTML.jQuery.HTML.CSS.JS ...
- android 微博tab,Android实现新浪微博客户端tab时遇到bug、
问题解决了.详细看回答一楼.. 但是有一个新的问题出现了,那就是在对RadioGroup设置onTouchListener监听器的时候,一直触发不了事件..是因为RadioGroup设置不了触摸监听器 ...
- android EditText完美解决禁止输入法表情
最近有个需求,需要评论的时候禁止输入法的表情输入.然后在网上各种找,发现有些人啊,也是服了,同样的东西反复写,并且还没解决问题,我就想问问,这个你们自己真的动手运行的了,效果实现了吗,还是说,效果实现 ...
- android仿微博头像_Android仿新浪微博个人信息界面及其他效果
本教程为大家分享了Android微博个人信息界面设计代码,供大家参考,具体内容如下 如果你已经实现前面的功能那个这个人信息界面便是小菜一碟,此处不作叙述. 补充 1.时间处理类: 处理微博发出时间距现 ...
- 处理新浪微博中@ #等格式 蓝色高亮~ 表情 以及点击事件
先上图看效果 表情只弄了一个,测试使用, 新浪微博接口中返回那么多表情 - - 还没处理,好像新浪微博客户端也有些没有处理到 正则不会处理#的问题 如 : 其他文字#要的#不要的#要的#其他文字 ...
最新文章
- java 人事_java版简易人事管理系统
- 2021春季学期-创新与实践-硬件平台硬件
- 使用Lombok简化你的代码
- lstm训练情感分析的优点_LSTM对电影评论进行简单的情感分析
- js使用const的好处_let和const命令
- Ubuntu系统上安装微信(legacy)
- 2020最新文本检测算法TextFuseNet
- 显著性测试(Friedman test, Post-hoc Nimenyi test以及可视化)
- 买了一个鼠标一个交换机,京东分别快递了发票
- spring源码:@Bean注解解析
- 验证码识别平台哪个好?
- Spring使用标签aop:aspectj-autoproxy 出的一些错
- 学会个人管理和自我管理必看的书籍推荐
- .to(device)和.cuda()设置GPU的区别
- 公关战之下,分裂的今日头条
- 全网最详细最基础的网络安全入门教程
- 电脑接通电源时不能睡眠休眠问题解决
- 【架构实战营】模块二 3.如何设计高可用架构?
- 数据分析(二)-zabbix/influxdb监控数据提取
- 制作U盘安装电脑系统教程 (图片操作详细步骤)