直接上代码
package cn.yhsh.keyeventdemo;
import android.text.InputFilter;
import android.text.Spanned;
/**
* @author xiayiye
* @date 2022/4/2 13:23
*/
public class SearchKeyWorldLengthFilter implements InputFilter {
private final int mMax;
public SearchKeyWorldLengthFilter(int max) {
mMax = max;
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
int keep = mMax - (dest.length() - (dend - dstart));
if (keep <= 0) {
//这里,用来给用户提示,当然可以替换成 更加优雅的形式
if (null != lengthListener) {
lengthListener.pass();
}
return "";
} else if (keep >= end - start) {
return null;
} else {
keep += start;
if (Character.isHighSurrogate(source.charAt(keep - 1))) {
--keep;
if (keep == start) {
return "";
}
}
return source.subSequence(start, keep);
}
}
public interface LengthListener {
void pass();
}
LengthListener lengthListener;
public void setLengthListener(LengthListener lengthListener) {
this.lengthListener = lengthListener;
}
}
使用方法如下:
SearchKeyWorldLengthFilter searchKeyWorldLengthFilter = new SearchKeyWorldLengthFilter(10);
editText.setFilters(new InputFilter[]{searchKeyWorldLengthFilter});
非常简单,超出字符直接就不能输入了,还可以吐司提示