输入@xxx #话题#等特殊字符,实现整体删除,文字高亮等功能的自定义EditText
项目地址 https://github.com/sunhapper/SpEditTool
思路介绍 自定义EditText轻松实现群聊精确@提及功能(@mention) 微博话题等功能
欢迎star,提PR、issue
ScreenShot
使用说明
Gradle
- root build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- dependency
dependencies {
compile 'com.github.sunhapper:SpEditTool:0.2.3'
}
xml
<com.sunhapper.spedittool.view.SpEditText
android:id="@+id/spEdt"
app:react_keys="#*%@"
app:sp_mode="breakable"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
- app:react_keys--要响应的字符列表,也可以在java代码中用setReactKeys设置
- app:sp_mode
- "integrated"表示完整删除
- "breakable"普通删除,当完整性被破坏,对应的数据和样式会被移除
java
- 设置要响应的字符列表及设置回调
//参数为String,会被解析成char[]
spEditText.setReactKeys("@#%*");
spEditText.setKeyReactListener(new KeyReactListener() {
@Override
public void onKeyReact(String key) {
//key被响应的字符,长度为1
//todo 处理自己的逻辑
}
});
- 插入特殊字符串
spEditText.insertSpecialStr(" @sunhapper ", true, 0, new ForegroundColorSpan(Color.RED));
/**
* 插入特殊字符串
*
* @param showContent 特殊字符串显示在文本框中的内容
* @param rollBack 是否往前删除一个字符,因为@的时候可能留了一个字符在输入框里
* @param customData 特殊字符串的数据结构
* @param customSpan 特殊字符串的样式
*/
public void insertSpecialStr(String showContent, boolean rollBack, Object customData,
Object customSpan)
- 获取SpEditText的数据
//获取到的数据是根据起点位置排过序的
SpData[] spDatas = spEditText.getSpDatas();
public class SpData {
/**
* EditText中显示的内容
*/
private String showContent;
/**
* 插入特殊字符串时传入的代表自定义数据结构的对象
*/
private Object customData;
/**
* 特殊字符串的在完整字符串中的起点
*/
private int start;
/**
* 特殊字符串的在完整字符串中的终点
*/
private int end;
}
彩蛋
GifTextUtil.setText(TextView textView,CharSequence text)
一行代码让TextView中ImageSpan支持Gif
本站以现代、古代情诗为主,情诗网创办于2013年,以原创爱情诗歌、经典情诗、现代情诗、古代情诗、英文情诗、情诗绝句为主并收集古诗、古诗词、诗歌大全、诗词名句的文学门户。方便您下次继续阅读;可以放在浏览器的收藏夹中(快捷键Ctrl+D);或者看到喜欢或者有趣的诗词可以通过分享按钮给你的好友分享;情诗网是目前最全情诗大全网站之一。并欢迎广大诗歌爱好者阅览投稿!喜欢本站的话请大家把本站告诉给你朋友哦!地址是 www.qingshiwang.com !