ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MentionEditText API参考清单:getMentionList、setPattern等8个核心方法完整详解

MentionEditText API参考清单:getMentionList、setPattern等8个核心方法完整详解 MentionEditText API参考清单getMentionList、setPattern等8个核心方法完整详解【免费下载链接】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 平台上一个轻量级的 提及mention输入框组件为 xxxx 这类字符串提供高亮显示、智能删除、智能选择和 输入检测四大功能。本文是一份 MentionEditText API 参考清单完整详解 getMentionList、setPattern 等 8 个核心方法新手也能快速上手。 MentionEditText 是什么4大特性一览MentionEditText 继承自 AppCompatEditText可以像普通输入框一样写在布局文件里但自动多了 4 项 提及专属能力特性效果✨ 高亮显示输入 Andy 时自动变成醒目颜色⌨️ 智能删除光标在 Andy 中间按退格先整段选中再按一次整体删除️ 智能选择光标无法停在 用户名内部拖选自动扩展到完整单词 输入检测用户刚输入 的瞬间触发回调方便弹出人员联想列表所有功能都集中在一个类中library/src/main/java/io/github/luckyandyzhang/mentionedittext/MentionEditText.java在布局中像普通输入框一样使用即可io.github.luckyandyzhang.mentionedittext.MentionEditText android:idid/editText android:layout_widthmatch_parent android:layout_heightwrap_content / 8个核心方法速查表先给一张 MentionEditText API 清单方便按需查阅行号均指 MentionEditText.java#方法类型作用源码行号1setPattern(tag, pattern)配置替换全部 匹配规则L1422addPattern(tag, pattern)配置新增一条匹配规则支持多标签L1523setMentionTextColor(color)配置设置 字符串高亮颜色L1614getMentionList(boolean)读取提取全部 提及L1715getMentionList(String, boolean)读取按标签提取 提及L1996setOnMentionInputListener(...)事件监听 字符的输入L2297setText(text, type)重写设置文本后光标自动移到末尾L858onCreateInputConnection(...)重写实现两次退格删除 用户名L80✍️ 如何提取用户getMentionList 两种用法详解getMentionList(boolean)一键取出所有提及// 假设文本为 hi Andy, 看看 Bob ListString users editText.getMentionList(true); // 返回 [Andy, Bob]参数传true时去掉开头的 符号得到Andy传false则保留完整字符串Andy。方法内部自动去重同一个用户被 多次也只会出现一次L171-L191。getMentionList(String, boolean)按标签分类提取当用 addPattern 同时配置了 和 # 两种规则时可以只提取其中一类ListString users editText.getMentionList(, true); // 只取 开头的提及第一个参数是规则标签第二个含义与上面相同L199-L222。 自定义匹配规则setPattern 与 addPattern 正则指南默认规则[\\u4e00-\\u9fa5\\w\\-]表示 后跟中文、字母、数字、下划线或连字符L51。两种配置方法的区别场景写法只保留一条规则会先清空已有规则editText.setPattern(, [a-zA-Z0-9_])同时识别 用户和 # 话题先addPattern(, ...)再addPattern(#, ...)⚠️ 注意setPattern内部会先执行mPatternMap.clear()再添加L142-L145想保留多条规则请务必用addPattern。 设置高亮颜色setMentionTextColor 使用技巧默认高亮色是红色L236可自定义为任意颜色editText.setMentionTextColor(Color.parseColor(#3B82F6));颜色值可用getResources().getColor()或Color.parseColor()获取L161-L163。修改后下一次文本变化时高亮即自动刷新无需手动刷新界面。 检测输入setOnMentionInputListener 监听器这是实现 弹出联想面板的关键方法L229editText.setOnMentionInputListener(new MentionEditText.OnMentionInputListener() { Override public void onMentionCharacterInput(String tag) { // 用户刚输入了 tag如 在这里弹出人员选择列表 } });只有当输入的字符与已配置的标签、# 等匹配时才会触发回调回调参数就是该标签本身。接口定义见 L408-L413配合 getMentionList 还能实现已 的人不再重复提示。⚙️ 两大自动机制智能选择与智能删除原理这两个能力无需调用任何 API组件内部自动完成机制实现位置行为智能选择onSelectionChangedL105-L135光标无法停在 用户名内部拖选自动扩展到完整单词智能删除onCreateInputConnectionL80-L82 内部类HackInputConnectionL331-L372光标在用户名中间时第 1 次退格整段选中第 2 次才真正删除另外setText()L85-L97也被重写程序设置文本后光标会自动跳到文本末尾方便用户接着输入省去了手动setSelection的步骤。 MentionEditText 默认配置一览表配置项默认值位置 标签DEFAULT_METION_TAGL50匹配正则DEFAULT_MENTION_PATTERN[\\u4e00-\\u9fa5\\w\\-]L51高亮颜色红色Color.REDL236键盘联想输入已关闭防输入法改写 用户名L238❓ 新手常见问题 FAQQ1删除 Andy 需要按几次退格两次。第一次把整个 Andy 选中第二次整体删除避免删出 An 这种残片。Q2getMentionList(true) 和 (false) 有什么区别true返回不含符号的Andyfalse返回完整的Andy发送消息前一般用true。Q3可以同时支持 用户和 # 话题吗可以。用addPattern分别添加两条规则再用带 tag 参数的getMentionList分类提取。Q4为什么输入框不再弹键盘联想词组件初始化时默认关闭键盘联想L238防止 用户名被输入法自动改写这是刻意设计。Q5接入项目需要什么依赖组件继承自 AppCompatEditText需引入 appcompat-v7 支持库依赖声明可参考README.md模块清单见library/src/main/AndroidManifest.xml许可证为 Apache 2.0LICENSE.txt。✅ 总结8个方法搞定提及完整体验MentionEditText 的 API 设计很克制8 个方法各司其职setPattern/addPattern管匹配规则setMentionTextColor管高亮外观getMentionList两个重载管结果提取setOnMentionInputListener管 输入检测setText和onCreateInputConnection两个重写方法则负责光标与智能删除体验。所有 API 均实现在library/src/main/java/io/github/luckyandyzhang/mentionedittext/MentionEditText.java中配合默认配置即可开箱即用非常适合聊天、评论类 App 快速接入 提及功能。【免费下载链接】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),仅供参考
返回列表