Android中EditText禁止输入表情的实例代码

发布时间 - 2026-01-11 02:59:51    点击率:

最近在做的项目中用户编辑资料的时候不希望用户输入表情,如果用户输入表情的话上传给后台要报错,所以需要我们前端做一个判断。下面就来说一下怎么在EditText中屏蔽表情吧。

网上有很多这样的列子但是一不小心就会掉进坑里面,比如继承EditText,重写addTextChangedListener()方法。可能当时你测试的时候没有什么问题,但是项目上线后就会有很多问题,错误率很高,但是查看友盟后台的时候好像是截取字符串长度方面的错误。所以建议大家不要使用那个方法了。

因为上面的方法不行,肯定要想其他的解决方案了。这里想到了通过过滤器来拦截用户输入的字符,可以避免截取字符串角标越界的问题。

InputFilter inputFilter= new InputFilter() {
    Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
        Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
      Matcher emojiMatcher = emoji.matcher(source);
      if (emojiMatcher.find()) {
        //          Toast.makeText(MainActivity.this,"不支持输入表情", 0).show();
        MyToast.showText("不支持输入表情");
        return "";
      }
      return null;
    }
  };

然后给editText设置filter,这里给editText设置了两个filter第一个是屏蔽表情,第二个是设置用户输入多少字数的限制

//给editText设置filter
edit_name.setFilters(new InputFilter[]{inputFilter,new InputFilter.LengthFilter(12)});

当然这里最后要提醒大家一点就是,这样屏蔽的表情符号肯定还是不能够百分之百的屏蔽完全的。所以最后我们只能选择让用户填写英文,汉字,和数字了。下面是过滤的代码

InputFilter inputFilter=new InputFilter() {

    Pattern pattern = Pattern.compile("[^a-zA-Z0-9\\u4E00-\\u9FA5_]");
    @Override
    public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
     Matcher matcher= pattern.matcher(charSequence);
      if(!matcher.find()){
        return null;
      }else{
        MyToast.showText("只能输入汉字,英文,数字");
        return "";
      }

    }
  };

ok,就是这么简单。希望对大家的学习有所帮助,也希望大家多多支持。


# edittext禁止输入表情  # android  # 禁止输入表情  # edittext输入表情  # android同时控制EditText输入字符个数和禁止特殊字符输入的方法  # Android之EditText控制禁止输入空格和回车  # Android实现EditText控件禁止输入内容的方法(附测试demo)  # Android EditText禁止输入空格和特殊字符  # Android如何禁止向EditText控件中输入内容详解  # 就会  # 有很多  # 英文  # 列子  # 不支持  # 第一个  # 其他的  # 要想  # 第二个  # 做一个  # 重写  # 报错  # 这么简单  # 不能够  # 什么问题  # 掉进  # 大家多多  # 提醒大家  # 表情符号  # 率很高 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  详解Android——蓝牙技术 带你实现终端间数据传输  如何在不使用负向后查找的情况下匹配特定条件前的换行符  打造顶配客厅影院,这份100寸电视推荐名单请查收  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  如何在万网自助建站中设置域名及备案?  香港服务器选型指南:免备案配置与高效建站方案解析  网站制作免费,什么网站能看正片电影?  如何登录建站主机?访问步骤全解析  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel如何实现API资源集合?(Resource Collection教程)  jQuery 常见小例汇总  如何快速查询域名建站关键信息?  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  JavaScript如何实现错误处理_try...catch如何捕获异常?  WEB开发之注册页面验证码倒计时代码的实现  如何用AI帮你把自己的生活经历写成一个有趣的故事?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Laravel如何实现一对一模型关联?(Eloquent示例)  Mybatis 中的insertOrUpdate操作  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  详解CentOS6.5 安装 MySQL5.1.71的方法  Python文件操作最佳实践_稳定性说明【指导】  如何在Windows 2008云服务器安全搭建网站?  Laravel集合Collection怎么用_Laravel集合常用函数详解  JavaScript如何实现音频处理_Web Audio API如何工作?  如何用wdcp快速搭建高效网站?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  LinuxShell函数封装方法_脚本复用设计思路【教程】  如何自定义建站之星网站的导航菜单样式?  如何将凡科建站内容保存为本地文件?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  如何在云主机上快速搭建多站点网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel模型事件有哪些_Laravel Model Event生命周期详解  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何在企业微信快速生成手机电脑官网?  如何挑选高效建站主机与优质域名?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  晋江文学城电脑版官网 晋江文学城网页版直接进入  JavaScript如何实现倒计时_时间函数如何精确控制  Win11关机界面怎么改_Win11自定义关机画面设置【工具】