最近刚做完项目,出了个测试包

就开开心心的把项目发给老板测试了

老板刚装上就给我批评了一顿,说刚用上就发现一个重大bug,还想不想要工资了

我当时心里就想:“sb,不会用吧”。。。。。

言归正传,现在很多输入法都自带了表情,输入的时候很方便,但是对我们程序员来说就不那么方便了,因为直接输入表情后台不做处理的话会报错的。虽然跟我们前端没有半毛钱关系,但是这毕竟也是一个bug,该处理处理下。

在网上看了些资料发现emoji表情还是有个范围的

(codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA)

|| (codePoint == 0xD)

|| ((codePoint >= 0x20) && (codePoint <= 0xD7FF))

|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))

|| ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))

这就好办多了,然后我们就可以通过上面的表达式判断是否是表情符号

于是我们就可以开始自定义EditText了

public class NoEmojiEditText extends android.support.v7.widget.AppCompatEditText {

// 输入表情前的光标位置

private int cursorPos; // 输入表情前EditText中的文本

private String inputAfterText; // 是否重置了EditText的内容

private boolean resetText;

private Context mContext;

public NoEmojiEditText(Context context) {

super(context);

this.mContext = context;

initEditText();

}

public NoEmojiEditText(Context context, AttributeSet attrs) {

super(context, attrs);

this.mContext = context;

initEditText();

}

public NoEmojiEditText(Context context, AttributeSet attrs,

int defStyleAttr) {

super(context, attrs, defStyleAttr);

this.mContext = context;

initEditText();

} // 初始化edittext 控件

private void initEditText() {

addTextChangedListener(new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence s, int start,

int before, int count) {

if (!resetText) {

cursorPos = getSelectionEnd(); // 这里用s.toString()而不直接用s是因为如果用s,

// 那么,inputAfterText和s在内存中指向的是同一个地址,s改变了,

// inputAfterText也就改变了,那么表情过滤就失败了

inputAfterText = s.toString();

}

}

@Override

public void onTextChanged(CharSequence s, int start, int before,

int count) {

if (!resetText) {

if (count >= 2) {// 表情符号的字符长度最小为2

CharSequence input = s.subSequence(cursorPos, cursorPos

+ count);

if (containsEmoji(input.toString())) {

resetText = true;

//暂不支持输入Emoji表情符号

ToastUtil.showShortToast(mContext, "暂不支持输入表情符号");// 是表情符号就将文本还原为输入表情符号之前的内容

setText(inputAfterText);

CharSequence text = getText();

if (text instanceof Spannable) {

Spannable spanText = (Spannable) text;

Selection.setSelection(spanText, text.length());

}

}

}

} else {

resetText = false;

}

}

@Override

public void afterTextChanged(Editable editable) {

}

});

}

/**

* 检测是否有emoji表情

*

* @param source

* @return

*/

public static boolean containsEmoji(String source) {

int len = source.length();

for (int i = 0; i < len; i++) {

char codePoint = source.charAt(i);

if (!isEmojiCharacter(codePoint)) { // 如果不能匹配,则该字符是Emoji表情

return true;

}

}

return false;

}

/**

* 判断是否是Emoji

*

* @param codePoint 比较的单个字符

* @return

*/

private static boolean isEmojiCharacter(char codePoint) {

return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA)

|| (codePoint == 0xD)

|| ((codePoint >= 0x20) && (codePoint <= 0xD7FF))

|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))

|| ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));

}

}

android+禁止输入表情,Android禁止输入表情符号的EditText相关推荐

  1. android textview表情,android如何在textview或edittext上添加表情

    先上效果图: 首先来写一个表情的GridView public class EmotionView extends LinearLayout implements OnItemClickListene ...

  2. android聊天表情,Android聊天应用程序表情符号的问题

    我正在开发Android聊天应用程序.现在我想在聊天模块中发送表情符号.我如何在聊天应用程序中实现表情符号?请指导我这个应用程序.如果有这个应用程序的任何API,那么也建议我.谢谢Android聊天应 ...

  3. android textview表情,Android开发(16)-TextView显示表情图像和文字

    从这个案例中我们可以学到当我们美化图片美化界面的时候可以在某一区域输入图片和文字混搭信息,第三张图片按比例缩小,第四张图像有超链接 布局文件 MainActivity.java package com ...

  4. oracle存储emoji表情,Android自带emoji表情的使用方法详解

    什么是emoji表情 emoji表情是一种表情符号,在代码中它现在其实是一组遵循Unicode的编码,即每一个表情符号都对应了一个Unicode编码.更进一步说,emoji表情实际上是一组Unicod ...

  5. Android实战场景 - 限制EditText仅支持输入数字、英文、汉字,禁止输入表情等特殊符号

    因项目需求,需要禁止用户输入表情符号,具体如下 ~ EditText相关Blog TextView.EditText属性大全 监听 EditText 文本变化 设置 EditText 光标颜色与下划线 ...

  6. android 屏蔽键盘表情,Android禁止输入表情符号

    在我们Android开发的项目中,难免有要求在输入框中禁止输入表情,所以呢,写了一个输入框禁止输入表情的demo,供大伙参考 效果图 如图显示,如果用户输入了表情字符,会提示. EmojiFilter ...

  7. android edittext禁止输入特殊字符,禁止输入表情以及特殊字符方法

    /** * 禁止输入表情以及特殊字符 */ public static class EmojiExcludeFilter implements InputFilter { @Override publ ...

  8. android中禁止输入表情符号,Android EdText编辑框禁止输入表情符号(使用正则表达式)...

    使用正则表达式 p s f s not_emoji = "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u ...

  9. EditText禁止输入表情

    一.前言 以前在做社区项目时,有个IM的需求,里面用到了自定义表情, 那时基本的做法就是在string.xml里面定义一个StringArray表情含义数组,里面每一个含义对应一个表情. 当在Edit ...

最新文章

  1. php lumen auth,学习 Lumen 用户认证 (一)
  2. PHPExcel开发者文档[中文版]
  3. python数据分析numpy_Python数据分析之numpy学习
  4. chrome 历史版本_2020 年最后一次更新,Chrome 性能大提升的新版本来了
  5. docker与kuberentes基本概念与操作学习
  6. arcgis将小于0的数值设置成0.01
  7. JS PopupAlert
  8. OpenCV绘制多边形的代码
  9. 小字符喷码机和高解析喷码机的区别
  10. 数字化综合档案管理系统 佰档管家|匠心打造
  11. doGetBean方法——(四)
  12. python金融编程入门_python金融实务从入门到精通完整版
  13. 中国NPP净初级生产力数据/植被覆盖空间分布数据分享(2000-2021)
  14. 嵌入式linux模块复位,嵌入式linux下复位声卡驱动
  15. (已解决)windows2020卸载office2013(安装程序包语言不受系统支持)
  16. 服务器没有系统能配置ip地址嘛,win10系统没有有效的ip配置怎么解决
  17. java半角英数check_java - 关于全角半角介绍以及处理方式
  18. [No00005F]读书与心智
  19. Origin单独改变一个柱状图的颜色
  20. Struts Tiles 框架概述

热门文章

  1. Bootstrap4官方文档 | v4核心 -- 组件(一)
  2. Java基础知识学习:简单随手记录(1)
  3. c语言中姓名查找的原理,搜索 C/C++ 函数调用原理
  4. 干啥啥不行,摸鱼第一名
  5. 使用C语言读取.txt文本数据构建链表时fscanf用法不当以及文件编码格式不对导致读取失败
  6. 遍历 list 嵌套
  7. 通过第三方平台签订电子合同的方法
  8. 女人只有和成熟的男人在一起才会幸福!看完你会懂很多
  9. 智策网认为低估值板块成长性不佳,成长股则估值过高
  10. excel 条件格式数据条_Excel条件格式的天气数据