Andorid--EditText输入监听事件
来源:互联网 发布:网络教育英语难不难 编辑:程序博客网 时间:2024/06/05 17:16
在日常开发中,我们经常跟EditText控件打交道,有时候我们的需求可能是这样的,对EditText字数进行统计或者限制。还有另外一种需求可能是这样的,对EditText进行监听,当用户开始输入文本信息的时候,下面那个按钮会变成亮色,或者变成可编辑按钮,这种设计需求越来越多优秀App已经开始有了。但是由于时间关系,这个暂时不讲。具体的话可以参考微信登录界面。所以今天主要讲解Android--EditText输入监听的变化。
一、使用EditText的addTextChangedListener(TextWatcher watcher)方法对EditText实现监听,TextWatcher是一个接口类,所以必须实现TextWatcher里的抽象方法:
当我们在EditText里面输入文本信息的时候,就会触发TextChangedListener监听事件。从而就会调用TextWatcher里面三个抽象方法。三个方法分别是:输入变化前,输入变化中,输入变化后。这样说大家可能不太懂,没关系,下面写一个案例让大家更好的理解!
二、动手实践篇,为了更好理解,首先先编辑了一个布局文件。
新建:activity.main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.soft0754.edittext.MainActivity"> <EditText android:id="@+id/main_et" android:layout_width="match_parent" android:layout_height="wrap_content" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/main_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:text="0" /> </RelativeLayout></LinearLayout>以上布局没什么的,主要就是一个EditText输入框用来输入监听的,和一个TextView用于来观察输入监听后的改变。
三、实现基本功能,用于监听EditText输入了的文本,让TextView提示已经输入多少个字符。
新建:MainActivity.java
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.text.Editable;import android.text.TextWatcher;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private EditText main_et; private TextView main_tv; private final int charMaxNum = 10; // 允许输入的字数 private CharSequence temp; // 监听前的文本 private int editStart; // 光标开始位置 private int editEnd; // 光标结束位置 private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { main_et = (EditText) this.findViewById(R.id.main_et); main_tv = (TextView) this.findViewById(R.id.main_tv); //设置EditText文本框输入监听事件 main_et.addTextChangedListener(textWatcher); } TextWatcher textWatcher = new TextWatcher() { // 输入文本之前的状态 @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } // 输入文本中的状态 @Override public void onTextChanged(CharSequence s, int start, int before, int count) { temp = s; //temp = s 用于记录当前正在输入文本的个数 } // 输入文本之后的状态 @Override public void afterTextChanged(Editable s) { editStart = main_et.getSelectionStart(); editEnd = main_et.getSelectionEnd(); main_tv.setText("" + temp.length()); //把输入temp中记录的字符个数显示在TextView上 if (temp.length() >10) { s.delete(editStart - 1, editEnd); int tempSelection = editStart; main_et.setText(s); main_et.setSelection(tempSelection); } } };}
解释已在代码中讲过。
最后、附加效果图:
好了,当前我们输入了10个文本信息,并且能够顺利监听完毕!有关EditText输入监听变化本期讲到这,有不懂的朋友欢迎随时交流讨论。
阅读全文
1 0
- Andorid--EditText输入监听事件
- android监听edittext输入事件
- EditText输入变化监听事件
- EditText输入变化监听事件
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- Android EditText截获与监听输入事件
- Android EditText截获与监听输入事件
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- EditText输入事件截获与监听
- Android EditText缴获与监听输入事件
- EditText输入事件截获与监听
- Android:EditText输入事件截获与监听
- 限制EditText输入字符及其事件监听
- EditText输入事件截获与监听
- 【Arduino入门教程之一】入门Hello World
- 修改密码显示和隐藏密码
- Linux下mysql完全卸载
- structs项目的web.xml配置
- Qt学习小记(三)
- Andorid--EditText输入监听事件
- 用c#打开.DBF文件 读取内容到DataTable或DataSet中
- ansible03 命令格式
- 基于hdp的kafka使用
- SpringBoot (九) :定时任务
- 洛谷P1392 取数
- bzoj1797: [Ahoi2009]Mincut 最小割
- java对Excel读写操作
- 原型模式--自我复制(结合Java浅复制与深复制)