700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android EditText限制输入表情和特殊符号的处理

Android EditText限制输入表情和特殊符号的处理

时间:2024-08-30 23:30:36

相关推荐

Android EditText限制输入表情和特殊符号的处理

限制输入表情

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() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic 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);}}}@Overridepublic void afterTextChanged(Editable editable) {}});}/*** 正则判断emoji表情** @param input* @return*/private boolean isEmoji(String input) {Pattern p = pile("[\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();}}

禁止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 = pile(speChat);Matcher matcher = pattern.matcher(source.toString());if (matcher.find()) {return "";} else {return null;}}}return null;};editText.setFilters(new InputFilter[]{filter});}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。