前言
这里使用的是安卓提供的InputFilter给输入框添加限制,如果不需要给输入提示的话,可以直接使用;例如:给editText添加一个输入限制最高为30,直接这样写
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(30)});
实现InputFilter
示例:
import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.text.InputFilter;
import android.text.Spanned;
import android.view.Gravity;
import android.widget.Toast;
public class MyLengthFilter implements InputFilter {
private final int mMax;
private Context context;
public MyLengthFilter(int max, Context context) {
mMax = max;
this.context = context;
}
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) {
//这里,用来给用户提示
Toast toast = Toast.makeText(context, "字数不能超过" + mMax, Toast.LENGTH_SHORT);
// 原吐司背景不明显,修改背景色
toast.getView().getBackground().setColorFilter(Color.parseColor("#c9c9c9"), PorterDuff.Mode.DARKEN);
// 调整吐司位置,在屏幕中间显示
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
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);
}
}
}
使用代码如下 :
//添加字数限制
mEditText.setFilters(new InputFilter[]{new MyLengthFilter(35,context)});