所以为了防止用户胡乱输入表情、同时限制用户只能输入应用自带的表情。编写了一个自定义控件来禁止输入的表情。
代码如下:
- package com.qd.widget;
- import android.content.Context;
- import android.text.InputFilter;
- import android.text.SpannableString;
- import android.text.Spanned;
- import android.text.TextUtils;
- import android.util.AttributeSet;
- import android.widget.EditText;
- /**
- * 过滤搜狗输入法或其他输入法 当中的图片或其他非法字符
- *
- * 暂时仅过滤了部分常用的表情字符
- *
- * @author QD
- *
- */
- public class MyEditText extends EditText {
- int maxLength = -1;
- public MyEditText(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- addListener(attrs);
- }
- public MyEditText(Context context, AttributeSet attrs) {
- super(context, attrs);
- addListener(attrs);
- }
- public MyEditText(Context context) {
- super(context);
- addListener(null);
- }
- private void addListener(AttributeSet attrs) {
- if (attrs != null)
- maxLength = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/android", "maxLength", -1);
- // 过滤输入法表情
- InputFilter filter = new InputFilter() {
- @Override
- public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
- StringBuffer buffer = new StringBuffer();
- for (int i = start; i 0)
- setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(maxLength) });
- else
- setFilters(new InputFilter[] { filter });
- }
- }