Android(安卓)监听EditText文本输入 EditText监听事和输入事件
16lz
2022-03-09
方法一:使用setOnKeyListener(),这种方式只能监听硬键盘事件所以大多数android设备不能用
editText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { Log.i(TAG, editText.getText()); return false; } });方法二:使用TextWatcher类,可监听软键盘和硬键盘的,只需实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理
editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { Log.i(TAG, "输入文字中的状态,count是输入字符数"); Log.i(TAG, editText.getText()); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { Log.i(TAG, "输入文本之前的状态"); } @Override public void afterTextChanged(Editable s) { Log.i(TAG, "输入文字后的状态"); } });方法三:实现当输入到最大值时则不允许再输入,另外由EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
private void setEditable(EditText editText, int maxLength, boolean value) { if (value) { editText.setFilters(new InputFilter[] { new MyEditFilter(maxLength) }); editText.setCursorVisible(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); } else { editText.setFilters(new InputFilter[] { new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { return source.length() < 1 ? dest.subSequence(dstart, dend) : ""; } } }); editText.setCursorVisible(false); editText.setFocusableInTouchMode(false); editText.clearFocus(); } }
更多相关文章
- Android软键盘弹出时把布局顶上去,控件乱套解决方法
- Android(安卓)MediaScannerService源码分析
- Android(安卓)强制设置横屏或竖屏 设置全屏
- android全屏去掉title栏的多种实现方法
- Android(安卓)重力感应
- Android(安卓)Canvas drawArc方法介绍
- android源码解析--switch
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用