支持表情,@mention,#话题#等功能的EditText控件--SpEditTool使用指南

输入@xxx #话题#等特殊字符,实现整体删除,文字高亮等功能的自定义EditText

项目地址 https://github.com/sunhapper/SpEditTool
思路介绍 自定义EditText轻松实现群聊精确@提及功能(@mention) 微博话题等功能
欢迎star,提PR、issue

ScreenShot

ScreenShot

emojiSp.gif

使用说明

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,001评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,268评论 6 342
  • 你所做的每一件事情都要有进步,哪怕这个进步微小到尘埃里也好过原地踏步。小的进步就是基石,暮然回首你会发现你做的每一...
    雪沐阅读 220评论 0 0
  • 北京大学:思想自由、兼容并包 清华大学:自强不息,厚德载物 浙江大学:求是创新 武汉大学:自强弘毅 求是拓新 南京...
    Derek_Kun阅读 548评论 4 2
  • 你要走了 我不舍得 自己没有想象中的要坚强 有很多回忆 关于你我之间 例如蓝莓草莓贵的你从来都不吃 留给我 你说你...
    Dinohere阅读 819评论 0 5

友情链接更多精彩内容