您的位置:首页 > 其它

安卓 edittext禁止表情图片的输入

2016-04-26 17:48 274 查看
注释掉的是过滤表情符号的代码,有需要过滤表情符号的可以把注释去掉

package com.goldgov.otms.util;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import android.text.Editable;

import android.text.InputFilter;

import android.text.Spanned;

import android.text.TextWatcher;

import android.widget.EditText;

public class EdittextListener implements TextWatcher {
// private final String reg =
// "^([a-z]|[A-Z]|[0-9]|[\u2E80-\u9FFF]){3,}|@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?|[wap.]{4}|[www.]{4}|[blog.]{5}|[bbs.]{4}|[.com]{4}|[.cn]{3}|[.net]{4}|[.org]{4}|[http://]{7}|[ftp://]{6}$";
// private Pattern pattern = Pattern.compile(reg);
// // 输入表情前的光标位置
// private int cursorPos;
// // 输入表情前EditText中的文本
// private String tmp;
// // 是否重置了EditText的内容
// private boolean resetText;
EditText contentEd;

public EdittextListener(EditText contentEd) {
this.contentEd = contentEd;
contentEd.setFilters(new InputFilter[] { emojiFilter });
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// if (!resetText) {
// if (count >= 3) {// 表情符号的字符长度最小为3
// // 提取输入的长度大于3的文本
// CharSequence input = s
// .subSequence(cursorPos, cursorPos + count);
// // 正则匹配是否是表情符号
// Matcher matcher = pattern.matcher(input.toString());
// if (!matcher.matches()) {
// resetText = true;
// // 是表情符号就将文本还原为输入表情符号之前的内容
// contentEd.setText(tmp);
// contentEd.invalidate();
// ToastUtil.showMsg("不支持表情输入");
// }
// }
// } else {
// resetText = false;
// }
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// if (!resetText) {
// cursorPos = contentEd.getSelectionEnd();
// tmp = s.toString();//
// 这里用s.toString()而不直接用s是因为如果用s,那么,tmp和s在内存中指向的是同一个地址,s改变了,tmp也就改变了,那么表情过滤就失败了
// }
}

@Override
public void afterTextChanged(Editable s) {
}

InputFilter emojiFilter = 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()) {
return "";
}
return null;
}
};

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  安卓