方法一:使用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中监听EditText的文本输入事件,重点讲解了使用setOnKeyListener()方法的限制及其在多数设备上的不可用性。
893

被折叠的 条评论
为什么被折叠?



