android控件edittext-addTextChangedListener监听文本的变化

前言:edittext的addTextChangedListener监听事件用于监听edittext的输入文本的变化,他都用于密码框,或者那种检测用户输入过程中的变化。

1.使用方式

  ①为edittext添加监听器

1 mEtPassword = (EditText) findViewById(R.id.id_et_password);
2         //添加监听器
3         mEtPassword.addTextChangedListener(new MyWatcher());

②创建一个实现TextWatcher接口的类,并实现他的方法

 1     class MyWatcher implements TextWatcher {
 2
 3         //
 4         public void beforeTextChanged(CharSequence s, int start, int count,
 5                 int after) {
 6             // TODO Auto-generated method stub
 7
 8         }
 9
10         @Override
11         public void onTextChanged(CharSequence s, int start, int before,
12                 int count) {
13             // TODO Auto-generated method stub
14
15         }
16
17
18         public void afterTextChanged(Editable edit) {
19
20         }
21     }

2.实现方法的解释

  <1> public void afterTextChanged(Editable edit) //检测文本改变之后的状态

edit // edit 输入结束呈现在输入框中的信息

我以log的方式进行输出,我在editext中输出文本是woshizhi

01-17 09:51:53.585: E/MainActivity(2134): edit=w
01-17 09:51:54.009: E/MainActivity(2134): edit=wo
01-17 09:51:54.033: E/MainActivity(2134): edit=wos
01-17 09:51:54.033: E/MainActivity(2134): edit=wosh
01-17 09:51:54.085: E/MainActivity(2134): edit=woshi
01-17 09:52:01.497: E/MainActivity(2134): edit=woshiy
01-17 09:52:01.517: E/MainActivity(2134): edit=woshiyi
01-17 09:52:01.697: E/MainActivity(2134): edit=woshiyiz
01-17 09:52:01.785: E/MainActivity(2134): edit=woshiyizh
01-17 09:52:01.873: E/MainActivity(2134): edit=woshiyizhi

通过上面可以看出在edittext中每输入一个词,就会相应的出来一个词

<2> public void beforeTextChanged(CharSequence s, int start, int count,int after)//文本在改变之前的状态

//s输入框中改变前的字符串信息 

       //start 输入框中改变前的字符串的起始位置 

       //count 输入框中改变前后的字符串改变数量一般为0 

       //after 输入框中改变后的字符串与起始位置的偏移量

   我以log的方式打印,我在edittext中同样输入woshiyizhi

01-17 10:08:41.269: E/MainActivity(2725): s=:start=0:count=0:after=1
01-17 10:09:07.197: E/MainActivity(2725): s=w:start=1:count=0:after=1
01-17 10:09:14.097: E/MainActivity(2725): s=wo:start=2:count=0:after=1
01-17 10:09:21.769: E/MainActivity(2725): s=wos:start=3:count=0:after=1
01-17 10:09:22.297: E/MainActivity(2725): s=wosh:start=4:count=0:after=1
01-17 10:09:24.117: E/MainActivity(2725): s=woshi:start=5:count=0:after=1
01-17 10:09:24.205: E/MainActivity(2725): s=woshiy:start=6:count=0:after=1
01-17 10:09:25.485: E/MainActivity(2725): s=woshiyi:start=7:count=0:after=1
01-17 10:09:25.657: E/MainActivity(2725): s=woshiyiz:start=8:count=0:after=1
01-17 10:09:25.729: E/MainActivity(2725): s=woshiyizh:start=9:count=0:after=1

通过log可以看出只有text和start参数在变化

<3>public void onTextChanged(CharSequence s, int start, int before,int count)//文本变化

        //s  输入框中改变后的字符串信息 

       //start 输入框中改变后的字符串的起始位置 

       //before 输入框中改变前的字符串的位置 默认为0 

       //count 输入框中改变后的一共输入字符串的数量 

我以log的方式打印,我在edittext中同样输入woshiyizhi

01-17 10:15:30.589: E/MainActivity(3065): s=w:start=0:after=0:count=1
01-17 10:15:46.345: E/MainActivity(3065): s=wo:start=1:after=0:count=1
01-17 10:15:48.893: E/MainActivity(3065): s=wos:start=2:after=0:count=1
01-17 10:15:49.921: E/MainActivity(3065): s=wosh:start=3:after=0:count=1
01-17 10:15:51.145: E/MainActivity(3065): s=woshi:start=4:after=0:count=1
01-17 10:15:51.681: E/MainActivity(3065): s=woshiy:start=5:after=0:count=1
01-17 10:15:52.333: E/MainActivity(3065): s=woshiyi:start=6:after=0:count=1
01-17 10:15:52.753: E/MainActivity(3065): s=woshiyiz:start=7:after=0:count=1
01-17 10:15:52.981: E/MainActivity(3065): s=woshiyizh:start=8:after=0:count=1
01-17 10:15:53.645: E/MainActivity(3065): s=woshiyizhi:start=9:after=0:count=1
时间: 2024-09-28 16:00:57

android控件edittext-addTextChangedListener监听文本的变化的相关文章

关于Android控件EditText的属性InputType的一些经验,java组合多个参数

关于Android控件EditText的属性InputType的一些经验 2013-11-14 15:08:02|  分类: 默认分类|举报|字号 订阅 1.InputType属性在代码中的设置必须放在setSingleLine()函数之后,否则无效: 2.关于InputType属性xml与代码的对应值如下: android java代码设置EditText输入格式参数对应Description列 setInputType(XXXXXXXX)或者setRawInputType(XXXXXXXX)

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

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

Android控件——EditText

EditText的XML属性以及类中方法 XML属性 类中方法 说明 android:text setText(CharSequence text) 设置文本内容 android:textColor setTextColor(int color) 字体颜色 android:hint setHint() 内容为空时显示的文本 android:textColorHint setHintTextColor(int color) 内容为空时显示文本的颜色 android:inputType setInp

【iOS开发-46】利用UIButton和UIImageView的区别分辨哪些控件有addTarget监听事件这个方法

(1)UIButton和UIImageView的相同点 都能显示图片. (2)UIButton和UIImageView的不同点 --前者不仅能显示图片还能监听事件(就是有addtarget方法) --前者不仅能显示图片还能显示两张图片(就是setImage和setBackgroundImage两个方法) --前者不仅能显示图片还能显示文字(就是setTitle方法) (3)使用场合 --如果仅仅是显示一个图片没其他花头,那就用UIImageView --如果有其他,那么-- 因为如果仅仅用于显示

Android 自定义android控件EditText边框背景

在我们进行Android应用界面设计和时候,为了界面风格的统一,我们需要对一些控件进行自定义.比如我们的应用采用的蓝色风格,但是 android的EditText控制获得焦点后显示的却是黄色的边框背景.那么如何让EditText在获得焦点的时候显示的是我们自定义的蓝色的背景 呢? 首先准备两张图片,一张是EditText获得焦点后的边框背景,一张是没有获得焦点时的背景,注意制作成9.png样式的图片,然后在drawable里添加一个selector_edittext_bg.xml文件,内容如下:

android控件EditText

<EditText     android:id="@+id/et_endeValue"     android:textSize="20pt"     android:minLines="2"     android:maxLines="3"     android:layout_width="wrap_content"     android:layout_height="wrap_co

Android控件——TextView,EditText

TextView: 显示文本控件 EditText 输入文本框 1.TextView常用属性: 2.EditText常用属性: 设置EditText的android:inputType属性可以限制文本输入类型比如android:inputType="textPassword"为设置输入格式为密码格, android:inputType="phone"为设置输入格式为拨号键盘 3.使用TextView与EditText 布局文件: <LinearLayout x

Android 带清除功能的输入框控件EditText

今天学习了自定义控件,然后自己做了一个用户登录小控件EditText,就是在Android系统的输入框右边加入一个小图标,点击小图标可以清除输入框里面的内容,但是Android原生EditText不具备此功能,所以要想实现这一功能我们需要重写EditText. 先说明一下,我是用Android studio写的,代码已经共享到我的github上了,有需要的可以去下载. 我们可以为我们的输入框在上下左右设置图片,所以我们可以利用属性android:drawableRight设置我们的删除小图标,如

安卓Android控件ListView获取item中EditText值

可以明确,现在没有直接方法可以获得ListView中每一行EditText的值. 解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写BaseAdapter.getView函数,用一个数组存储EditText中的值,根据position即数组下标,在getView中动态更新EditText和动态获取EditText中的值.因为ListView中的item是复用的,如果不动态清空或动态获取EditText中值,就会出现数据紊乱,或者没数