EditText输入事件截获与监听

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


  1.第一种实现方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件
     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方法,用于更加详细的输入监听处理

    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的禁止输入功能,以下方法也实现了此功能。
    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();
		}
	}
  


EditText输入事件截获与监听


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论