監聽EditText的文本變化需要給EditText控制項加一個addTextChangeListener監聽器 editText.addTextChangeListener(textWatcher); 這裡的textWatcher是一個TextWatcher對象, TextWatcher是一個介面, ...
監聽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>
效果圖:
就在你沒有起身鞭策自己的一剎那,你不曉得退後了多少!