public class MaxByteLengthEditText extends EditText {
private int maxByteLength = 100;
private String encoding = "GBK";
public MaxByteLengthEditText(Context context) {
super(context);
init();
}
public MaxByteLengthEditText(Context context,AttributeSet attrs) {
super(context,attrs);
init();
}
private void init() {
setFilters(new InputFilter[] {inputFilter});
}
public int getMaxByteLength() {
return maxByteLength;
}
public void setMaxByteLength(int maxByteLength) {
this.maxByteLength = maxByteLength;
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
/**
* input输入过滤
*/
private InputFilter inputFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
try {
int len = 0;
boolean more = false;
do {
SpannableStringBuilder builder =
new SpannableStringBuilder(dest).replace(dstart, dend, source.subSequence(start, end));
len = builder.toString().getBytes(encoding).length;
more = len > maxByteLength;
if (more) {
end--;
source = source.subSequence(start, end);
}
} while (more);
return source;
} catch (UnsupportedEncodingException e) {
return "Exception";
}
}
};
}
android上文本框输入限制最大字节数
最新推荐文章于 2022-07-11 07:35:00 发布