因项目需求,需要禁止用户输入表情符号,个人认为方式有俩种。
第一种键盘弹出不显示表情选项(失败,因为每个手机的Rom烧制都是固定的,很难去操作,主要是水平有限);
第二种,显示表情选项,但是输入之后EditText不做处理,不会进行展示,这样我们传输的时候就不会出现错误;
查询一些网上的处理方案,有的朋友是通过一些正则去过滤,有的是通过自定义类去做处理,当然应该都是通过校验实现的,这里我在Github找到了一个自定义控件,内置表情处理,可以直接拿来用,但是要详情使用的话,最好熟悉一下对应的属性信息。
作者介绍:
带删除功能的EditText;显示或者隐藏密码;可设置自动添加分隔符分割电话号码、银行卡号等;支持禁止Emoji表情符号输入
原作者Github地址:
https://github.com/woxingxiao/XEditText
以下是一些EditText限制属性
EditText限制输入信息(有数字,密码等,但不包含表情):
android:inputType=""
如:
android:inputType="none"
android:inputType="text"
android:inputType="textCapCharacters"
android:inputType="textCapWords"
android:inputType="textCapSentences"
android:inputType="textAutoCorrect"
android:inputType="textAutoComplete"
android:inputType="textMultiLine"
android:inputType="textImeMultiLine"
android:inputType="textNoSuggestions"
android:inputType="textUri"
android:inputType="textEmailAddress"
android:inputType="textEmailSubject"
android:inputType="textShortMessage"
android:inputType="textLongMessage"
android:inputType="textPersonName"
android:inputType="textPostalAddress"
android:inputType="textPassword"
android:inputType="textVisiblePassword"
android:inputType="textWebEditText"
android:inputType="textFilter"
android:inputType="textPhonetic"
android:inputType="number"
android:inputType="numberSigned"
android:inputType="numberDecimal"
android:inputType="phone"
android:inputType="datetime"
android:inputType="date"
android:inputType="time"
使用方式
build :
compile 'com.xw.repo:xedittext:1.0.6@aar'
Layout (父布局加入命名空间):
xmlns:app="http://schemas.android.com/apk/res-auto"
EditText(所用代码):
<com.xw.repo.xedittext.XEditText
android:layout_width="match_parent"
android:layout_height="161dp"
android:background="@null"
android:gravity="top"
android:hint="请分享相关问题"
android:paddingLeft="17dp"
android:textColor="#999999"
android:textSize="13sp"
app:x_disableEmoji="true" />
禁止表情:
app:x_disableEmoji="true"
一键清除:
app:x_disableClear="true"
hint显示位置:
android:gravity="top"
取消Edit原有的下划线背景:
android:background="@null"