android 输入框EditText禁止输入Emoji表情符

android 输入框EditText禁止输入Emoji表情符

转载请注明出处:

通过添加EditText的addTextChangedListener()监听来过滤Emoji表情:

在开发中可能多处会用到过滤Emoji表情符,,为了方便使用自定义EditText来实现:

package com.liujy.ui.wiget;import android.content.Context;import android.text.Editable;import android.text.Selection;import android.text.Spannable;import android.text.TextWatcher;import android.util.AttributeSet;import android.widget.EditText;{cursorPos;//输入表情前EditText中的文本private String inputAfterText;resetText;private Context mContext;public ContainsEmojiEditText(Context context) {super(context);this.mContext = context;initEditText();}public ContainsEmojiEditText(Context context, AttributeSet attrs) {super(context, attrs);this.mContext = context;initEditText();}public ContainsEmojiEditText(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);this.mContext = context;initEditText();}() {addTextChangedListener(new TextWatcher() {(CharSequence s, int start, int before, int count) {if (!resetText) {cursorPos = getSelectionEnd();inputAfterText= s.toString();}}(CharSequence s, int start, int before, int count) {if (!resetText) {if (count >= 2) {//表情符号的字符长度最小为2CharSequence input = s.subSequence(cursorPos, cursorPos + count);if (containsEmoji(input.toString())) {resetText = true;Toast.makeText(mContext, “不支持输入Emoji表情符号”, Toast.LENGTH_SHORT).show();//是表情符号就将文本还原为输入表情符号之前的内容setText(inputAfterText);CharSequence text = getText();if (text instanceof Spannable) {Spannable spanText = (Spannable) text;Selection.setSelection(spanText, text.length());}}}} else {resetText = false;}}(Editable editable) {}});}/*** 检测是否有emoji表情** @param source* @return*/(String source) {int len = source.length();for (int i = 0; i < len; i++) {char codePoint = source.charAt(i);;}}return false;}/*** 判断是否是Emoji** @param codePoint 比较的单个字符* @return*/(char codePoint) {return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) ||(codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000)&& (codePoint <= 0x10FFFF));}}xml文件使用方法<android:layout_width=”match_parent”android:layout_height=”wrap_content” />

源码下载地址

GitHub下载地址

经验是由痛苦中粹取出来的

android 输入框EditText禁止输入Emoji表情符

相关文章:

你感兴趣的文章:

标签云: