android EditText 限定中文个数与英文个数的解决方式
生活随笔
收集整理的這篇文章主要介紹了
android EditText 限定中文个数与英文个数的解决方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
EditText?限定中文8個英文16個的解決方法。
在EditText上控件提供的屬性中有限定最大最小長度的方法。
可是,對于輸入時,限定中文8個英文16個時,怎么辦?相當于一個中文的長度是兩個英文的長度。
原理就不說了。自己看一下android的源代碼。
以上直接上代碼。
private final int maxLen = 16; private InputFilter filter = new InputFilter() {@Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {int dindex = 0; int count = 0; while (count <= maxLen && dindex < dest.length()) {char c = dest.charAt(dindex++); if (c < 128) {count = count + 1; } else {count = count + 2; }}if (count > maxLen) {return dest.subSequence(0, dindex - 1); }int sindex = 0; while (count <= maxLen && sindex < source.length()) {char c = source.charAt(sindex++); if (c < 128) {count = count + 1; } else {count = count + 2; }}if (count > maxLen) {sindex--; }return source.subSequence(0, sindex); }};
使用例如以下:
editText.setFilters(new InputFilter[]{filter});
轉載于:https://www.cnblogs.com/wzzkaifa/p/7262738.html
總結
以上是生活随笔為你收集整理的android EditText 限定中文个数与英文个数的解决方式的全部內容,希望文章能夠幫你解決所遇到的問題。