EditText输入事件截获与监听
2013-12-24 00:16
453 查看
本节介绍一下EditText中进行文字截获和事件监听。
预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/14/d5094fd0eae127ec89700ed25c1cb5c0.png)
1.第一种实现方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201207/6f228e2bbe3cf88ed655ccbee8f485dd.png)
edittext.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
textview.setText(edittext.getText());
return false;
}
});
2.使用TextWatcher类,这种方式是可以监听软键盘和硬键盘的,我们只需要实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201207/6f228e2bbe3cf88ed655ccbee8f485dd.png)
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
textview.setText(edittext.getText());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
3、代码片段:实现当输入到最大值时则不允许再输入了,另外,由于EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201207/6f228e2bbe3cf88ed655ccbee8f485dd.png)
private void setEditable(EditText mEdit, int maxLength, boolean value) {
if (value) {
mEdit.setFilters(new InputFilter[] { new MyEditFilter(maxLength) });
mEdit.setCursorVisible(true);
mEdit.setFocusableInTouchMode(true);
mEdit.requestFocus();
} else {
mEdit.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)
: "";
}
} });
mEdit.setCursorVisible(false);
mEdit.setFocusableInTouchMode(false);
mEdit.clearFocus();
}
}
预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/14/d5094fd0eae127ec89700ed25c1cb5c0.png)
1.第一种实现方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201207/6f228e2bbe3cf88ed655ccbee8f485dd.png)
edittext.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
textview.setText(edittext.getText());
return false;
}
});
2.使用TextWatcher类,这种方式是可以监听软键盘和硬键盘的,我们只需要实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201207/6f228e2bbe3cf88ed655ccbee8f485dd.png)
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
textview.setText(edittext.getText());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
3、代码片段:实现当输入到最大值时则不允许再输入了,另外,由于EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201207/6f228e2bbe3cf88ed655ccbee8f485dd.png)
private void setEditable(EditText mEdit, int maxLength, boolean value) {
if (value) {
mEdit.setFilters(new InputFilter[] { new MyEditFilter(maxLength) });
mEdit.setCursorVisible(true);
mEdit.setFocusableInTouchMode(true);
mEdit.requestFocus();
} else {
mEdit.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)
: "";
}
} });
mEdit.setCursorVisible(false);
mEdit.setFocusableInTouchMode(false);
mEdit.clearFocus();
}
}
相关文章推荐
- Android EditText截获与监听输入事件
- Android EditText截获与监听输入事件
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- Android EditText截获与监听输入事件
- 【转】Android EditText截获与监听输入事件
- Android EditText截获与监听输入事件
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- Android:EditText输入事件截获与监听
- Android 监听EditText文本输入 EditText监听事和输入事件
- android监听edittext输入事件
- EditText 详细信息(监听事件时,输入改变、透明背景、提示改变文字颜色、密文输入)
- EditText输入事件截获与监 4000 听
- EditText监听输入完成和设置点击事件时与父控件的冲突问题
- EditText输入变化监听事件
- 监听EditText输入事件