资讯动态

MentionEditText使用完全指南:@提及颜色定制、正则配置、列表提取与输入回调四大用法

发布时间:2026/8/22 14:06:57 来源:尧图企业网站定制
MentionEditText使用完全指南提及颜色定制、正则配置、列表提取与输入回调四大用法【免费下载链接】MentionEditTextMentionEditText adds some useful features for mention string(xxxx), such as highlight, intelligent deletion, intelligent selection and input detection, etc.项目地址: https://gitcode.com/gh_mirrors/me/MentionEditTextMentionEditText 是一款专为 Android 打造的 提及xxx文本增强组件让输入框具备高亮着色、智能删除、智能选中、字符输入检测四大实用功能。只需几行代码就能实现类似微博、Twitter 的 人 交互体验。 MentionEditText 能做什么功能说明对应 API 提及高亮文本变化时自动为 提及着色颜色可定制setMentionTextColor() 正则配置自定义什么算一个 提及的识别规则setPattern()/addPattern() 列表提取一键取出文本中全部 提及方便后续查询用户getMentionList() 输入回调用户每敲一次字符实时触发回调setOnMentionInputListener()此外还附带两个开箱即用的智能特性按一次退格整词删除 提及、光标无法停在 提及中间。全部功能都在一个文件里实现核心源码见library/src/main/java/io/github/luckyandyzhang/mentionedittext/MentionEditText.java。 快速上手3步启用 MentionEditText第 1 步添加 Gradle 依赖在build.gradle中加入以下配置新版 Gradle 可将compile替换为implementationrepositories { maven { url https://jitpack.io } } dependencies { compile com.android.support:appcompat-v7:24.2.1 compile com.github.luckyandyzhang:MentionEditText:1.0.0 }第 2 步在布局文件中声明组件和普通 EditText 用法一致直接替换标签即可io.github.luckyandyzhang.mentionedittext.MentionEditText android:idid/editText android:layout_widthmatch_parent android:layout_heightwrap_content /第 3 步像普通 EditText 一样使用MentionEditText editText findViewById(R.id.editText);到这里就已经生效了——输入Andy 明天见Andy会自动变成红色高亮光标停在Andy中间按退格整个词一次删除。 用法一提及颜色定制MentionEditText 的默认高亮色是红色Color.RED。想让 提及用品牌色一行代码搞定// 用十六进制颜色值定制比如科技蓝 editText.setMentionTextColor(Color.parseColor(#1E88E5));颜色值支持Color.parseColor()、getResources().getColor()等任意标准取色方式。组件会在每次文本变化时重新着色所以无需手动刷新。 用法二正则配置自定义识别规则默认正则[\u4e00-\u9fa5\w\-]表示 后跟一个或多个中文、字母、数字或连字符例如张三、Andy、user-01都能被识别。如果想收紧或扩展规则按「标签 → 正则」的方式配置// 修改 标签的规则只识别英文字母和数字 editText.setPattern(, [a-zA-Z0-9]); // 追加 # 话题标签中文话题 #安卓 也会被高亮 // 注意setPattern() 会清空已有规则addPattern() 是增量添加 editText.addPattern(#, #[\\u4e00-\\u9fa5\\w]);小建议一个 MentionEditText 可以维护多组标签规则提及和 #话题 可以同时高亮、同时提取非常适合评论区场景。 用法三一键提取 提及列表发送评论后需要查找被 的人并推送通知getMentionList()直接把结果交给你// 保留 符号[Andy, 张三] ListString withAt editText.getMentionList(false); // 去掉 符号[Andy, 张三]方便直接查用户表 ListString names editText.getMentionList(true); // 只提取 # 标签下的话题结果自动去重 ListString topics editText.getMentionList(#, true);第一个参数控制是否剥掉开头的第二个带标签的重载版本可以精确提取某类规则命中的内容。 用法四 字符输入回调想做输入 自动弹出选人列表MentionEditText 会在字符真正插入文本时触发回调editText.setOnMentionInputListener(tag - { // tag 为命中的标签字符例如 showMentionPicker(); // 弹出 人选择面板 });回调参数tag是命中的提及标签如果同时配置了和#两种规则可以在这里根据 tag 弹出不同面板人选人、#话题选话题。✨ 附赠两个免配置的智能体验智能删除光标在Andy内按一次退格先整体选中再按一次整体删除不用逐字删误删概率大大降低。智能选中光标无法停留在 提及中间点击词内部会自动吸附到词的起点或终点setText()设置文本后光标也会自动落到末尾。 项目文件速查文件说明library/src/main/java/io/github/luckyandyzhang/mentionedittext/MentionEditText.java核心组件实现高亮、正则、回调、智能删除全部在此README.md依赖配置与基础用法LICENSE.txtApache License 2.0可放心商用❓ 常见问题Q为什么Andy Zhang带空格不会被完整识别A默认正则不含空格空格前的Andy会被识别为提及。如需支持带空格的提及可用setPattern()自定义正则允许空格字符。QMentionEditText 会影响我原有的输入逻辑吗A它继承自AppCompatEditText原有监听器、格式化等能力全部保留仅在退格键和光标定位上做了针对 提及的增强。Q免费吗可以商用吗A项目采用 Apache 2.0 协议开源可自由使用、修改和商用详见LICENSE.txt。写在最后MentionEditText 用最轻量的一层封装解决了 提及交互中最高频的四个诉求颜色定制让提及更醒目正则配置让规则更灵活列表提取让业务联动更简单输入回调让 人面板触手可及。如果你的 Android 项目有评论、弹幕、群聊需求这个组件值得一试 【免费下载链接】MentionEditTextMentionEditText adds some useful features for mention string(xxxx), such as highlight, intelligent deletion, intelligent selection and input detection, etc.项目地址: https://gitcode.com/gh_mirrors/me/MentionEditText创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价