Android之EditText文本变化的监听

  监听EditText的文本变化需要给EditText控件加一个addTextChangeListener监听器

  editText.addTextChangeListener(textWatcher);  这里的textWatcher是一个TextWatcher对象,

  TextWatcher是一个接口,它有三个抽象方法,具体如下:  

/** *文本改变之前调用 * @param s 输入框的原内容字符串 * @param start 字符串开始改变的索引位置 * @param count 即将被替换的字符个数 * @param after 替换这count个字符的新的字符的个数 */   public void beforeTextChanged(CharSequence s, int start,int count, int after);
/** * 文本改变时调用 * @param s  变化之后的输入框内容 * @param start 字符串开始改变的索引位置 * @param before 被替换的字符的个数 * @param count 替换这before个字符的新的字符的个数 */   public void onTextChanged(CharSequence s, int start, int before, int count);
/** * 文本改变之后调用 * @param s  最终输入框中的内容 */   public void afterTextChanged(Editable s);代码:MainActivity.java
 1 package com.example.admin.edittext;
 2
 3 import android.os.Bundle;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.text.Editable;
 6 import android.text.TextWatcher;
 7 import android.util.Log;
 8
 9 import android.view.View;
10 import android.widget.Button;
11 import android.widget.EditText;
12 import android.widget.TextView;
13
14 import com.lidroid.xutils.ViewUtils;
15 import com.lidroid.xutils.util.LogUtils;
16 import com.lidroid.xutils.view.annotation.ViewInject;
17
18 public class MainActivity extends AppCompatActivity{
19     @ViewInject(R.id.text)
20     private TextView text;   //这里使用了xUtils框架的注解功能初始化控件
21
22     @ViewInject(R.id.editText)
23     private EditText input;
24
25     @ViewInject(R.id.button)
26     private Button button;
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         super.onCreate(savedInstanceState);
30         setContentView(R.layout.activity_main);
31         ViewUtils.inject(this);
32         initEvent();
33     }
34
35     private void initEvent() {
36         input.addTextChangedListener(change);
37         button.setOnClickListener(new View.OnClickListener() {
38             @Override
39             public void onClick(View v) {
40              input.setText("");
41             }
42         });
43     }
44
45     TextWatcher change = new TextWatcher() {
46             @Override
47             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
48                 LogUtils.i("beforeTextChanged:"+s+","+start+","+count+","+after);
49             }
50
51             @Override
52             public void onTextChanged(CharSequence s, int start, int before, int count) {
53                 text.setText("还能输入"+(50-s.toString().length())+"个字符");
54                 LogUtils.i("onTextChange:"+s+","+start+","+before+","+count);
55             }
56
57
58             public void afterTextChanged(Editable s) {
59                 Log.i("Editable s:",s.toString());
60             }
61     };
62
63
64 }

activity_main.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5   >
 6
 7     <TextView
 8         android:id="@+id/text"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_marginTop="20dp"
12         android:text="还能输入50个字" />
13
14     <EditText
15         android:id="@+id/editText"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:layout_below="@id/text"
19         android:maxLength="50"
20         />
21     <Button
22         android:id="@+id/button"
23         android:layout_width="match_parent"
24         android:layout_height="wrap_content"
25         android:text="重置文本"
26         android:textColor="#ffffff"
27         android:background="#ff0000"
28         android:layout_marginTop="10dp"
29         android:layout_below="@id/editText"
30         />
31 </RelativeLayout>

效果图:



就在你没有鞭策自己起身的一刹那,你不晓得退后了多少!
时间: 2024-08-05 23:55:50

Android之EditText文本变化的监听的相关文章

Android基础入门教程——3.5 监听EditText的内容变化

Android基础入门教程--3.5 监听EditText的内容变化 标签(空格分隔): Android基础入门教程 本节引言: 在前面我们已经学过EditText控件了,本节来说下如何监听输入框的内容变化! 这个再实际开发中非常实用,另外,附带着说下如何实现EditText的密码可见 与不可见!好了,开始本节内容! 1.监听EditText的内容变化 由题可知,是基于监听的事件处理机制,好像前面的点击事件是OnClickListener,文本内容 变化的监听器则是:TextWatcher,我们

Android数据库内容变化的监听

首先介绍内容监测的基本模式 基于uri的内容监测的基本模式被android.content.ContentResolver实现. 它为基于Uri的内容监测的提供了一个平台.(其实如果有必要,我们可以自己实现一个)ContentResolver为此提供了三个方法:注册监听器到某个uripublic final void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)

Android中Preference的使用以及监听事件分析

> 在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准).归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个

(七)android开发中两种方式监听短信的原理和实现

一.监听短信的两种方式的简介 Android程序开发中,有两种方式监听短信内容:一.接收系统的短信广播:二.应用观察者模式,监听短信数据库. 第一种方式接收系统的短信广播: A.这种方式只对新收到的短消息有效,运行代码,并不会读取收件箱中已读或未读的消息,只有当收到新来的短消息时,才会执行onReceive()方法. B.并且这个广播是有序广播,如果当别的程序先读取到了这个广播,然后拦截掉了个这个广播,你将接收不到.当然我们可以通过设置priority的数值,其实有时是不管用的,现在在一些定制的

Android中Button的五种监听事件

简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activity本身作为事件监听器,实现onClickListener5.外部类作为监听器 ButtonListenerActivity.class public class ButtonListenerActivity extends AppCompatActivity implements View.On

Android开发之使用BroadcastReceiver实时监听电量(源代码分享)

Android系统中实时的监听手机电量以及开机启动功能都是通过BroadcastReceiver组件实现的.我们可以动态注册这个类的一个实例通过Context.registerReceiver()方法或者静态注册,通过<Receiver>标记在androidmanifest . xml.注意:如果我们注册一个接收器在Activity.onResume()实现,我们应该注销Activity在Activity生命周期的onPause方法中.(这将减少不必要的系统开销).切记不能注销Activity

Linux文本模式下监听鼠标事件

Linux文本模式下监听鼠标事件,这里是通过gpm这个来实现的,代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <gpm.h> 5 6 void main(int argc,char **argv) 7 { 8 fd_set readset; 9 Gpm_Event event; 10 Gpm_Connect conn; 11 12 conn.

Android 开发事件响应之基于监听的事件响应

Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事件响应类型 内部类 匿名内部类 外部类 直接绑定标签 总结 背景介绍 对于任何可视化开发来说,都会涉及到对控件的响应.我们通过举例:实现对Button 按钮的点击来讲解Android 里面对事件相应的办法. Android 开发事件响应类型 在Android 开发中,有两种方式可以对事件作出响应,分

Android 向Application对象添加Activity监听

可以建立对象把Application.ActivityLifecycleCallbacks接口中的函数实现,并利用public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks callback)函数向application添加代理对象. 比如以下代码,在本程序的全部activity的resume时都会调用. @Override public void onActivityResumed