需求:用户在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 "";