过滤输入法的表情

简介: 所以为了防止用户胡乱输入表情、同时限制用户只能输入应用自带的表情。编写了一个自定义控件来禁止输入的表情。 代码如下: [java] view plaincopy package com.qd.widget;    import android.content.Context;  import android.text.InputFilter;  im

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

代码如下:


  1. package com.qd.widget;  
  2.   
  3. import android.content.Context;  
  4. import android.text.InputFilter;  
  5. import android.text.SpannableString;  
  6. import android.text.Spanned;  
  7. import android.text.TextUtils;  
  8. import android.util.AttributeSet;  
  9. import android.widget.EditText;  
  10.   
  11. /** 
  12.  * 过滤搜狗输入法或其他输入法 当中的图片或其他非法字符 
  13.  *  
  14.  * 暂时仅过滤了部分常用的表情字符 
  15.  *  
  16.  * @author QD 
  17.  *  
  18.  */  
  19.   
  20. public class MyEditText extends EditText {  
  21.   
  22.     int maxLength = -1;  
  23.   
  24.     public MyEditText(Context context, AttributeSet attrs, int defStyle) {  
  25.         super(context, attrs, defStyle);  
  26.         addListener(attrs);  
  27.     }  
  28.   
  29.     public MyEditText(Context context, AttributeSet attrs) {  
  30.         super(context, attrs);  
  31.         addListener(attrs);  
  32.     }  
  33.   
  34.     public MyEditText(Context context) {  
  35.         super(context);  
  36.         addListener(null);  
  37.     }  
  38.   
  39.     private void addListener(AttributeSet attrs) {  
  40.         if (attrs != null)  
  41.             maxLength = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/android""maxLength", -1);  
  42.         // 过滤输入法表情  
  43.         InputFilter filter = new InputFilter() {  
  44.             @Override  
  45.             public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {  
  46.                 StringBuffer buffer = new StringBuffer();  
  47.                 for (int i = start; i < end; i++) {  
  48.                     char c = source.charAt(i);  
  49.                     // 第一个字符为以下时,过滤掉  
  50.                     if (c == 55356 || c == 55357 || c == 10060 || c == 9749 || c == 9917 || c == 10067 || c == 10024  
  51.                             || c == 11088 || c == 9889 || c == 9729 || c == 11093 || c == 9924) {  
  52.                         i++;  
  53.                         continue;  
  54.                     } else {  
  55.                         buffer.append(c);  
  56.                     }  
  57.                 }  
  58.                 if (source instanceof Spanned) {  
  59.                     SpannableString sp = new SpannableString(buffer);  
  60.                     TextUtils.copySpansFrom((Spanned) source, start, end, null, sp, 0);  
  61.                     return sp;  
  62.                 } else {  
  63.                     return buffer;  
  64.                 }  
  65.             }  
  66.         };  
  67.         // 输入框长度限制  
  68.         if (maxLength > 0)  
  69.             setFilters(new InputFilter[] { filter, new InputFilter.LengthFilter(maxLength) });  
  70.         else  
  71.             setFilters(new InputFilter[] { filter });  
  72.     }  

目录
相关文章
|
30天前
如何给视频中插入视频,字幕,以及去掉前后广告
如何给视频中插入视频,字幕,以及去掉前后广告
9 0
|
6月前
|
架构师 iOS开发
iOS Emoji 表情的过滤及非法字符
iOS Emoji 表情的过滤及非法字符
89 1
|
5月前
Markdown语法和表情
Markdown语法和表情
47 0
|
9月前
|
Java Maven Android开发
Android自定义一个车牌字母选择键盘
和省份简称键盘不同的是,数据源上和边距有所差别之外,其他的实现方式均是一样的,采用外部垂直LinearLayout,内部多个横向的LinearLayout的搭配方式。
|
11月前
|
XML 存储 计算机视觉
04.过滤掉朋友圈头像中不含人脸的图片(选作)
04.过滤掉朋友圈头像中不含人脸的图片(选作)
55 0
|
Java Android开发 内存技术
|
API 开发工具 C#
C#使用原生方法将文字朗读出来
C#使用原生方法将文字朗读出来
189 0
|
Web App开发
给谷歌输入法增添自定义词组,提高输入效率
给谷歌输入法增添自定义词组,提高输入效率
250 0
给谷歌输入法增添自定义词组,提高输入效率
手机使用谷歌拼音输入法几点建议
1,谷歌拼音的中文输入最好使用双拼,在这里我推荐使用自然码双拼。由于规则简单,两天时间即可完全掌握。 2,使用滑动输入,配合双拼只用滑动两个字母就可以完成快速输入汉字,而且可以输入长句子。
1382 0