输入框限制长度一般会选择在xml中使用android:maxLength属性,但是maxLength属性限制的是输入的字符的长度,而不是字节长度,通过使用如下工具类,可以实现EditText输入的最大字节长度。
Utf8ByteLengthFilter.java
import android.text.InputFilter;
import android.text.Spanned;
public class Utf8ByteLengthFilter implements InputFilter {
private final int mMaxBytes;
public Utf8ByteLengthFilter(int maxBytes) {
mMaxBytes = maxBytes;
}
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
int srcByteCount = 0;
// count UTF-8 bytes in source substring
for (int i = start; i < end; i++) {
char c = source.charAt(i);
srcByteCount += (c < (char) 0x0080) ? 1 : (c < (char) 0x0800 ? 2 : 3);
}
int destLen = dest.length();
int destByteCo