方案一
自定EditText重写commitText。
@Override
public boolean commitText(CharSequence text, int newCursorPosition) {
// 仅汉字
if (!isChinese(text.toString())) {
return false;
}
return super.commitText(text, newCursorPosition);
}
方案二
输完查EditText字符都汉字否。
方案三
说明
通InputFilter接口实现。
实现
ZsInputFilter
package widget;
import android.text.InputFilter;
import android.text.Spanned;
import static com.fr.android.stable.pinyin.ChineseHelper.isChinese;
/**
* Created on 2018/10/8.
*
* @desc InputFilter
*/
public class ZsInputFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!isChinese(source.charAt(i))) {
return "";
}
}
return null;
}
}
public static boolean isChinese(char c) {
String regex = "[\\u4e00-\\u9fa5]";
return String.valueOf(c).matches(regex);
}
主代码(不限长)
editText.setFilters(new InputFilter[]{new ZsInputFilter()});
主代码(限长)
editText.setFilters(new InputFilter[]{new ZsInputFilter(), new InputFilter.LengthFilter(6)});