Android中限制EditText(输入框)文字输入长度
16lz
2021-01-24
开发过程经常遇到要输入用户名等类似要限制输入字数的要求,我们可以用InputFilter来实现,
下面是继承的InputFilter:
public class MyInputFilter implements InputFilter { private Paint mPaint; private int mMaxWidth; private static final String TAG = "MyInputFilter"; private int EDIT_WIDTH = 280; private int mPadding = 10; public MyInputFilter(Paint paint, int maxWidth) { if (paint != null) { mPaint = paint; } else { mPaint = new Paint(); mPaint.setTextSize(30F); } if (maxWidth > 0) { mMaxWidth = maxWidth - mPadding; } else { mMaxWidth = EDIT_WIDTH; } } @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { float w = mPaint.measureText(dest.toString() + source.toString()); if (w > mMaxWidth) { //TODO: remind the user not to input anymore return ""; } return source; }}
这样来使用它:
/* * Set edit text input max length constraint to border. */ public static void setEditTextFilter(EditText edit) { int width = edit.getWidth(); Utils.log("Uitls", "edit width = " + width); Paint paint = new Paint(); paint.setTextSize(edit.getTextSize()); InputFilter[] filters = { new MyInputFilter(paint, width) }; edit.setFilters(filters); }
用这样方法的优点是可以用在多个输入框中,可是有个缺点是当用联想输入法一次输入较长的中文词语或英文单词后,不会自动截断词语或单词。
(全文完)
更多相关文章
- Android实现多语言
- Android(安卓)Gradle 插件中文指南
- Android开发 System.out.println(); 控制台输出方法
- android AutoCompleteTextView 实现输入提示,类似百度支持输入拼
- android 车机电话的通讯录联系人搜索实现解析 ------- 填坑日记
- 同样line-height下ios和Android显示不一致的问题
- android/NDK开发assets资源中文名打包问题
- Linux Kernel and Android(安卓)休眠与唤醒(中文版)
- android JNI C代码对sdcard中文件的操作