//编辑框限制字数
editText.setFilters(new InputFilter[]{new MyLengthFilter(20, this)});
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
class MyLengthFilter implements InputFilter {
private final int mMax;
private Context context;
private Toast toast;
public MyLengthFilter(int max, Context context) {
mMax = max;
this.context = context;
}
@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) {
//超出字数并提示
showToast();
return "";
} else if (keep >= end - start) {
return null; // keep original
} else {
keep += start;
if (Character.isHighSurrogate(source.charAt(keep - 1))) {
--keep;
if (keep == start) {
return "";
}
}
return source.subSequence(start, keep);
}
}
/**
* @return the maximum length enforced by this input filter
*/
public int getMax() {
return mMax;
}
//toast只出现一次
private void showToast() {
if (toast == null) {
toast = Toast.makeText(context, "字数已达到最大限制", Toast.LENGTH_SHORT);
} else {
toast.setText("字数已达到最大限制");
}
toast.show();
}
}
editText限制字数并提示
最新推荐文章于 2023-01-12 19:30:00 发布