Editext禁止输入Emoji表情
来源:互联网 发布:淘宝店铺设计公司 编辑:程序博客网 时间:2024/03/19 14:34
Editext禁止输入Emoji表情
直接内部类使用用一个监听搞定
package com.warden.snsemoji; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private static final String TAG = "warden"; private EditText mainEt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainEt = (EditText) findViewById(R.id.main_et); mainEt.addTextChangedListener(new TextChange(mainEt)); } private class TextChange implements TextWatcher { private EditText et; public TextChange(EditText et) { this.et = et; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // i("s:" + s); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // e("s:" + s + " start:" + start + " before:" + before + " count:" + count); //输入的类容 CharSequence input = s.subSequence(start, start + count); //e("输入信息:" + input); // 退格 if (count == 0) return; //如果 输入的类容包含有Emoji if (isEmojiCharacter(input)) { show("not input emoji"); //那么就去掉 et.setText(removeEmoji(s)); } //如果输入的字符超过最大限制,超出的部分 砍掉~ if (s.length() > 3) { show("超过输入的最大限制"); et.setText(s.subSequence(0, start)); } //最后光标移动到最后 TODO 这里可能会有更好的解决方案 et.setSelection(et.getText().toString().length()); } @Override public void afterTextChanged(Editable s) { // d("s:" + s); } } /** * 去除字符串中的Emoji表情 * @param source * @return */ private String removeEmoji(CharSequence source) { String result = ""; for (int i = 0; i < source.length(); i++) { char c = source.charAt(i); if (isEmojiCharacter(c)) { continue; } result += c; } return result; } /** * 判断一个字符串中是否包含有Emoji表情 * @param input * @return true 有Emoji */ private boolean isEmojiCharacter(CharSequence input) { for (int i = 0; i < input.length(); i++) { if (isEmojiCharacter(input.charAt(i))) { return true; } } return false; } /** * 是否是Emoji 表情,抄的那哥们的代码 * * @param codePoint * @return true 是Emoji表情 */ public static boolean isEmojiCharacter(char codePoint) { // Emoji 范围 boolean isScopeOf = (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xD7FF) && (codePoint != 0x263a)) || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF)); return !isScopeOf; } private void show(String msg) { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } void e(String msg) { Log.e(TAG, msg); } void i(String msg) { Log.i(TAG, msg); } void d(String msg) { Log.d(TAG, msg); } }
0 0
- Editext禁止输入Emoji表情
- iOS禁止输入emoji表情
- iOS禁止输入emoji表情
- textarea禁止输入emoji表情
- iOS输入框禁止输入emoji表情
- ios 判断禁止输入emoji表情
- EditText禁止输入Emoji表情的处理
- UITextView中禁止输入表情Emoji
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- EditText输入框禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- Android如果让其它APP能调起自己写的播放器的方法
- DataTable转换为List 【拓展方法】
- window下nodejs环境配置
- 重装win7系统分享
- 任务和返回栈
- Editext禁止输入Emoji表情
- Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire
- to_char,to_date和to_number
- sql的开发规范
- spring clound 之 springcloud config 入门
- JVM调优总结(参考深入理解Java虚拟机书籍)
- 解决,APP运行中找不到so库的问题
- java中 关于a = a++; 与 a = ++a; 的问题
- Shell脚本学习之expect命令