EditText输入中文时出现下划线拼音处理

需求:用户在EditText里输入文字时 通过afterTextChanged监听用户输入状态,在输入文字时自动调用后台,请求数据。

问题:在小米等部分手机上时,因为小米系统的问题,输入法在EditText上输入东西时,会优先输入一段带下划线的拼音然后在用户选择某个字的时候才会变成汉字,但是对于afterTextChanged方法来说,不管是拼音还是汉字都会触发监听事件,对于我们而言,很明显那些拼音输入时不需要的。

 如我输入 学习 二字,在小米上就是先显示 xuexi  然后才能选择 学习。

解决方法:

/**
 * 过滤非选中输入,比如输入中文时,过滤掉搜索框里已经输入的拼音(小米手机出现的情况)
 * 返回空字符串,就代表匹配不成功,返回null代表匹配成功
 */
InputFilter iF = new InputFilter() {
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        SpannableString ss = new SpannableString(source);
        Object[] spans = ss.getSpans(0, ss.length(), Object.class);
        if(spans != null) {
            for(Object span : spans) {
                if(span instanceof UnderlineSpan) {
                    return "";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值