前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >过滤输入法的表情

过滤输入法的表情

作者头像
xiangzhihong
发布2018-01-29 17:13:39
1.2K0
发布2018-01-29 17:13:39
举报
文章被收录于专栏:向治洪向治洪

所以为了防止用户胡乱输入表情、同时限制用户只能输入应用自带的表情。编写了一个自定义控件来禁止输入的表情。

代码如下:

代码语言:java
复制
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 < end; i++) {  
 char c = source.charAt(i);  
 // 第一个字符为以下时,过滤掉 
 if (c == 55356 || c == 55357 || c == 10060 || c == 9749 || c == 9917 || c == 10067 || c == 10024 
                            || c == 11088 || c == 9889 || c == 9729 || c == 11093 || c == 9924) {  
                        i++;  
 continue;  
                    } else {  
                        buffer.append(c);  
                    }  
                }  
 if (source instanceof Spanned) {  
                    SpannableString sp = new SpannableString(buffer);  
                    TextUtils.copySpansFrom((Spanned) source, start, end, null, sp, 0);  
 return sp;  
                } else {  
 return buffer;  
                }  
            }  
        };  
 // 输入框长度限制 
 if (maxLength > 0)  
            setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(maxLength) });  
 else 
            setFilters(new InputFilter[] { filter });  
    }  
}  
 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档