1、限制输入表情
public class EmojiEditText extends EditText {
private Context mContext;
public EmojiEditText (Context context) {
super(context);
this.mContext = context;
initEditText();
}
public EmojiEditText (Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
initEditText();
}
public EmojiEditText (Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
initEditText();
}
private void initEditText() {
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
if (count - before >= 1) {
CharSequence input = charSequence.subSequence(start + before, start + count);
if (isEmoji(input.toString())) {
Toast.makeText(mContext,"不支持emoji表情",Toast.LENGTH_SHORT).show();
((SpannableStringBuilder) charSequence).delete(start + before, start + count);
}
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
/**
* 正则判断emoji表情
*
* @param input
* @return
*/
private boolean isEmoji(String input) {
Pattern p = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\ud83e\udc00-\ud83e\udfff]" +
"|[\u2100-\u32ff]|[\u0030-\u007f][\u20d0-\u20ff]|[\u0080-\u00ff]");
Matcher m = p.matcher(input);
return m.find();
}
}
2、禁止EditText输入特殊字符
/**
* 禁止EditText输入特殊字符
*
* @param editText
*/
public static void setEditTextInhibitInputSpeChats(EditText editText) {
InputFilter filter = (source, start, end, dest, dstart, dend) -> {
if (!TextUtils.isEmpty(source)) {
SpannableString ss = new SpannableString(source);
Object[] spans = ss.getSpans(0, ss.length(), Object.class);
if (spans != null) {
// String speChat="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
//这里也可以根据自己的需求自行添加需要判断的特殊符号
if (source.toString().equals("\"") || source.toString().equals("\'")) {
return "";
}
String speChat = "[`''<>/”“’]";
Pattern pattern = Pattern.compile(speChat);
Matcher matcher = pattern.matcher(source.toString());
if (matcher.find()) {
return "";
} else {
return null;
}
}
}
return null;
};
editText.setFilters(new InputFilter[]{filter});
}
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_42467528/article/details/125442060