EditText输入事件截获与监听

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

1.第一种实现方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件

Java代码  

  1. edittext.setOnKeyListener(new View.OnKeyListener() {
  2. @Override
  3. public boolean onKey(View v, int keyCode, KeyEvent event) {
  4. textview.setText(edittext.getText());
  5. return false;
  6. }
  7. });

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

Java代码  

  1. edittext.addTextChangedListener(new TextWatcher() {
  2. @Override
  3. public void onTextChanged(CharSequence s, int start, int before, int count) {
  4. textview.setText(edittext.getText());
  5. }
  6. @Override
  7. public void beforeTextChanged(CharSequence s, int start, int count,
  8. int after) {
  9. }
  10. @Override
  11. public void afterTextChanged(Editable s) {
  12. }
  13. });

3、代码片段:实现当输入到最大值时则不允许再输入了,另外,由于EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。

Java代码  

    1. private void setEditable(EditText mEdit, int maxLength, boolean value) {
    2. if (value) {
    3. mEdit.setFilters(new InputFilter[] { new MyEditFilter(maxLength) });
    4. mEdit.setCursorVisible(true);
    5. mEdit.setFocusableInTouchMode(true);
    6. mEdit.requestFocus();
    7. } else {
    8. mEdit.setFilters(new InputFilter[] { new InputFilter() {
    9. @Override
    10. public CharSequence filter(CharSequence source, int start,
    11. int end, Spanned dest, int dstart, int dend) {
    12. return source.length() < 1 ? dest.subSequence(dstart, dend)
    13. : "";
    14. }
    15. } });
    16. mEdit.setCursorVisible(false);
    17. mEdit.setFocusableInTouchMode(false);
    18. mEdit.clearFocus();
    19. }

}

http://yoyotota.iteye.com/blog/1110521

时间: 2024-10-14 04:39:17

EditText输入事件截获与监听的相关文章

Android EditText截获与监听输入事件

Android EditText截获与监听输入事件共有2种方法: 1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件. edittext.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { textview.setText(edittext.getText()); return fal

Android开发中给EditText控件添加TextWatcher监听实现对输入字数的限制

做这个功能是因为开发项目的时候,由于后台接口的一些参数的值的长度有要求,不能超过多少个字符,所以在编辑框中输入的字符是要有限制的. 下面就来看一下demo的实现过程: 首先,在xml控件中放置一个EditText控件,然后初始化该控件并对该控件添加文本监听.xml自己简单的设计一下,代码较为简单,直接上代码: package com.example.edittext; import android.app.Activity; import android.os.Bundle; import an

关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景假设 假设有博客系统中需要实现如下功能: 系统中用户发布文章,修改文章,删除文章时,需要一些相关的操作

spring 自定义事件发布及监听(简单实例)

前言: Spring的AppilcaitionContext能够发布事件和注册相对应的事件监听器,因此,它有一套完整的事件发布和监听机制. 流程分析: 在一个完整的事件体系中,除了事件和监听器以外,还应该有3个概念: 1. 事件源:事件的产生者,任何一个event都必须有一个事件源: 2. 事件广播器:它是事件和事件监听器之间的桥梁,负责把事件通知给事件监听器: 3. 事件监听器注册表:就是spring框架为所有的监听器提供了一个存放的地方: 通过流程图,可以看出它们是如何各司其职的,如下: 其

巧用 即刻搜索事件 input propertychange 监听输入框字数

实时监听输入框的字数,大于200时,不再输入. 即时搜索: propertychange(ie)和input事件(常用) input是标准的浏览器事件,一般应用于input元素,当input的value发生变化就会发生,无论是键盘输入还是鼠标黏贴的改变都能及时监听到变化 propertychange,只要当前对象属性发生改变.(IE专属的) <div class="container js_container"> <div class="weui-cells

Javascript----input事件实现动态监听textarea内容变化

1.代码 <!DOCTYPE html> <html> <head> <title>textarea输入文字监听</title> </head> <body> <textarea id='text' maxlength="50" style="width: 400px; height: 200px;"></textarea> <span id='sp'&

文本框中的输入字的格式监听

限制文本框中只可以输入数字   JFoormattedTextField price= new JFormattedTextField(); price.addKeyListener(new NumberListener());//添加监听对象

JavaScript之事件概念和监听事件

1.事件的概念: JavaScript使我们有能力创建动态页面,网页中的每一个元素都可以产生某些触发JavaScript函数的事件.我们可以认为事件是可以被JavaScript侦测到的一种行为. 2.事件流: 事件流主要分为冒泡型事件和捕获型事件.IE浏览器目前只支持冒泡型事件,而支持标准DOM的浏览器比如火狐.Chrome等两者都支持. 3.使用返回值改变HTML元素的默认行为: HTML元素大都包含了自己的默认行为,例如:超链接.提交按钮等.我们可以通过在绑定事件中加上"return fal

求助 android监听事件 实现代码监听鼠标的左键,中间键,右键

============问题描述============ 在编写代码中能够实现监听的键盘和手机的home键等,但是我一直没有找到怎么去监听到数遍的三个键,左键.右键.中间键. ============解决方案1============ android是有鼠标的. 通常,设置你的 /system/usr/idc/<your touch panel>.idc文件中的 touch.deviceType = Pointer 就是鼠标了. 现在市面上已经卖了不少用android做的智能手机或dongle