EditText输入事件截获与监听

本节介绍一下EditText中进行文字截获和事件监听。
预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容


1.第一种实现方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件
Java代码 收藏代码
  1. edittext.setOnKeyListener(newView.OnKeyListener(){
  2. @Override
  3. publicbooleanonKey(Viewv,intkeyCode,KeyEventevent){
  4. textview.setText(edittext.getText());
  5. returnfalse;
  6. }
  7. });


2.使用TextWatcher类,这种方式是可以监听软键盘和硬键盘的,我们只需要实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理

Java代码 收藏代码
  1. edittext.addTextChangedListener(newTextWatcher(){
  2. @Override
  3. publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){
  4. textview.setText(edittext.getText());
  5. }
  6. @Override
  7. publicvoidbeforeTextChanged(CharSequences,intstart,intcount,
  8. intafter){
  9. }
  10. @Override
  11. publicvoidafterTextChanged(Editables){
  12. }
  13. });


3、 代码片段:实现当输入到最大值时则不允许再输入了,另外,由于EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
Java代码 收藏代码
  1. privatevoidsetEditable(EditTextmEdit,intmaxLength,booleanvalue){
  2. if(value){
  3. mEdit.setFilters(newInputFilter[]{newMyEditFilter(maxLength)});
  4. mEdit.setCursorVisible(true);
  5. mEdit.setFocusableInTouchMode(true);
  6. mEdit.requestFocus();
  7. }else{
  8. mEdit.setFilters(newInputFilter[]{newInputFilter(){
  9. @Override
  10. publicCharSequencefilter(CharSequencesource,intstart,
  11. intend,Spanneddest,intdstart,intdend){
  12. returnsource.length()<1?dest.subSequence(dstart,dend)
  13. :"";
  14. }
  15. }});
  16. mEdit.setCursorVisible(false);
  17. mEdit.setFocusableInTouchMode(false);
  18. mEdit.clearFocus();
  19. }
  20. }
本节介绍一下EditText中进行文字截获和事件监听。
预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容


1.第一种实现方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件
Java代码 收藏代码
  1. edittext.setOnKeyListener(newView.OnKeyListener(){
  2. @Override
  3. publicbooleanonKey(Viewv,intkeyCode,KeyEventevent){
  4. textview.setText(edittext.getText());
  5. returnfalse;
  6. }
  7. });


2.使用TextWatcher类,这种方式是可以监听软键盘和硬键盘的,我们只需要实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理

Java代码 收藏代码
  1. edittext.addTextChangedListener(newTextWatcher(){
  2. @Override
  3. publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){
  4. textview.setText(edittext.getText());
  5. }
  6. @Override
  7. publicvoidbeforeTextChanged(CharSequences,intstart,intcount,
  8. intafter){
  9. }
  10. @Override
  11. publicvoidafterTextChanged(Editables){
  12. }
  13. });


3、 代码片段:实现当输入到最大值时则不允许再输入了,另外,由于EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
Java代码 收藏代码
  1. privatevoidsetEditable(EditTextmEdit,intmaxLength,booleanvalue){
  2. if(value){
  3. mEdit.setFilters(newInputFilter[]{newMyEditFilter(maxLength)});
  4. mEdit.setCursorVisible(true);
  5. mEdit.setFocusableInTouchMode(true);
  6. mEdit.requestFocus();
  7. }else{
  8. mEdit.setFilters(newInputFilter[]{newInputFilter(){
  9. @Override
  10. publicCharSequencefilter(CharSequencesource,intstart,
  11. intend,Spanneddest,intdstart,intdend){
  12. returnsource.length()<1?dest.subSequence(dstart,dend)
  13. :"";
  14. }
  15. }});
  16. mEdit.setCursorVisible(false);
  17. mEdit.setFocusableInTouchMode(false);
  18. mEdit.clearFocus();
  19. }
  20. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值