Android开发之EditText限制输入中文以及字数长度限制的标准姿势
生活随笔
收集整理的這篇文章主要介紹了
Android开发之EditText限制输入中文以及字数长度限制的标准姿势
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
老套路先上效果圖:
設(shè)置輸入框的兩個(gè)篩選器:
etGiftName.setFilters(new InputFilter[]{new ZsInputFilter(5,this), new LengthListener(5,this)});我們來看下篩選器如何實(shí)現(xiàn)的:
先看中文篩選器
package com.yhsh.mobile.giftcomponent;import android.app.Activity; import android.text.InputFilter; import android.text.Spanned; import android.widget.Toast;/*** @author 下一頁5(輕飛揚(yáng))* 創(chuàng)建時(shí)間:2019/8/4 16:38* 個(gè)人小站:http://yhsh.wap.ai(已掛)* 空間名稱:group-wallet-android* 限制中文輸入篩選器*/ public class ZsInputFilter implements InputFilter {private Activity mActivity;private int maxValue;public ZsInputFilter(int maxValue, Activity shopPayActivity) {this.maxValue = maxValue;mActivity = shopPayActivity;}@Overridepublic CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {for (int i = start; i < end; i++) {if (!isChinese(source.charAt(i))) {Toast.makeText(mActivity, "只能輸入中文", Toast.LENGTH_SHORT).show();return "";} else {//是中文,提示最多5個(gè)漢字if (source.length() >= maxValue) {Toast.makeText(mActivity, "最多只能輸入" + maxValue + "個(gè)漢字", Toast.LENGTH_SHORT).show();}}}return null;}private static boolean isChinese(char c) {String regex = "[\\u4e00-\\u9fa5]";return String.valueOf(c).matches(regex);} }再看下長度篩選器:
package com.yhsh.mobile.giftcomponent;import android.app.Activity; import android.text.InputFilter; import android.text.Spanned; import android.widget.Toast;/*** @author 下一頁5(輕飛揚(yáng))* 創(chuàng)建時(shí)間:2019/8/5 10:21* 個(gè)人小站:http://yhsh.wap.ai(已掛)* 空間名稱:group-wallet-android*/ public class LengthListener implements InputFilter {private final int mMax;private Activity mActivity;public LengthListener(int max, Activity activity) {mMax = max;mActivity = activity;}@Overridepublic 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.makeText(mActivity, "最多只能輸入" + mMax + "個(gè)漢字", Toast.LENGTH_SHORT).show();return "";} else if (keep >= end - start) {return null;} 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;} }?
總結(jié)
以上是生活随笔為你收集整理的Android开发之EditText限制输入中文以及字数长度限制的标准姿势的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语用法杂记
- 下一篇: Android开发之购物车加减按钮(附加