Android中EditText屏蔽第三方输入法表情的方法示例

前言

众所周知如果用第三方的输入法的表情会给开发带来一定的麻烦,一般地像服务器上传的字符都是普通的字符,但是测试,就是狠狠得拿出搜狗输入法,点几个表情,那么问题就来了,要么是显示异常,要么是直接crash,但是有很少的部分机型,会支持,可能是第三方的ROM对Android 的TextView 做了一定的处理,所以,我们只能干掉该死的表情了。

具体的方法如下:

首先是在EditTextView 里面加入TextWatcher

在判断字符的变化时,就判断字符的类型,是否为字符,否则删除原来的字符,重新输入;

mEditTextView.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable editable) { int index = contentText.getSelectionStart() - 1; if (index > 0) { if (isEmojiCharacter(editable.charAt(index))) { Editable edit = contentText.getText(); edit.delete(index, index + 1); } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } });

这里就是判断字符是否为表情;

private static boolean isEmojiCharacter(char codePoint) { return !((codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD) || ((codePoint >= 0x20) && odePoint <= 0xD7FF))|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))); }

总结

以上就是关于Android中EditText屏蔽第三方输入法表情的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

时间: 2024-09-20 11:46:43

Android中EditText屏蔽第三方输入法表情的方法示例的相关文章

Android中EditText点击获得焦点后无法显示输入法键盘

[背景] android中EditText的Enable已经设置为True了,表示可以被编辑, 但是点击输入框,获得焦点后,无法显示输入法,导致无法输入内容. 比如: Descriptor的值是EditText 之前已经设置为可编辑了: ? 1 2 EditText variableValueView = (EditText) variableLayout.findViewById(R.id.variableValue); variableValueView.setEnabled(true);

Android中InputMethodManager怎么设置输入法键盘为数字键盘?

问题描述 Android中InputMethodManager怎么设置输入法键盘为数字键盘? 2C 现在需要强制弹出安卓系统键盘,并且是数字键盘,不是字母键盘.下面是强制弹出系统键盘代码(弹出来的是字母键盘) InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0 InputMethodManager.HIDE_NOT_A

android l版本-MTK平台,Android L版本,第三方输入法设为默认输入法的问题

问题描述 MTK平台,Android L版本,第三方输入法设为默认输入法的问题 按照FAQ上面的方法是在InputMethodManagerService.java中的systemRunning()方法中给perInstalledImeName赋值完整的第三方输入法包名ID,或者在system.prog文件中添加ro.mtk_default_ime的属性, String preInstalledImeName = SystemProperties.get("ro.mtk_default_ime&

Android中EditText光标在4.0中的bug及解决方法_Android

本文分析了Android中EditText光标在4.0中的bug及解决方法.分享给大家供大家参考,具体如下: 一.问题: 不知道为什么,我的EditText的在我自己的手机中出现的时候,他的光标就变得没有了,我开始还以为是光标不见了,后面我修改了一下EditText的背景颜色,才发现是因为光标的颜色变成了白色,所以没有看见. 二.解决办法 : 复制代码 代码如下: android:textCursorDrawable 设置值为"@null",但是我觉得那个不怎么好看,那个地方也可以替换

在android中edittext的初始值是什么?大家帮忙看看

问题描述 在android中edittext的初始值是什么?大家帮忙看看 String str=et.getText().toString();其中et为EditText类型 解决方案 public TextView(Context context AttributeSet attrs int defStyle) { super(context attrs defStyle); ** mText = """";** mText 是个空串. */ @ViewDebug

Android中EditText如何去除边框添加下划线_Android

废话不多说了,直接给大家贴代码了. <span style="font-family: Arial, Helvetica, sans-serif;"><?xml version="1.0" encoding="utf-8"?> </span> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android中EditText显示明文与密码的两种方式_Android

效果图如下所述: 布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pa

Android中EditText 设置 imeOptions 无效问题的解决方法_Android

有时候我们需要在EditText  输出完之后 需要在键盘出现 右下角变成"Go"或"前往 搜索时:通常我们需要设置Android:imeOptions属性.Android:imeOptions的值有actionGo. actionSend .actionSearch.actionDone等 但是今天我发现设置了无效  那是因为我设置了 android:maxLines="1" 解决方法 就是去掉 android:maxLines="1"

Android中EditText 设置 imeOptions 无效问题的解决方法

有时候我们需要在EditText  输出完之后 需要在键盘出现 右下角变成"Go"或"前往 搜索时:通常我们需要设置Android:imeOptions属性.Android:imeOptions的值有actionGo. actionSend .actionSearch.actionDone等 但是今天我发现设置了无效  那是因为我设置了 android:maxLines="1" 解决方法 就是去掉 android:maxLines="1"