通过TextWatcher去观察输入框中输入的内容以及输入字符个数

  布局中EditText在android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过TextWatcher去观察输入框中输入的内容,作个笔记。
  主布局:

  <?xml version="1.0" encoding="utf-8"?>    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >    <TextView  android:id="@+id/tv"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:textColor="@android:color/white"    android:ellipsize="marquee"    android:focusable="true"    android:marqueeRepeatLimit="marquee_forever"    android:focusableInTouchMode="true"    android:scrollHorizontally="true"    android:text="Please input the text:"    />    <EditText android:id="@+id/ET"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:inputType="number"/>    </LinearLayout>

  java代码:

package com.android.text;    import android.app.Activity;  import android.os.Bundle;  import android.text.Editable;  import android.text.TextWatcher;  import android.util.Log;  import android.widget.EditText;  import android.widget.TextView;  import android.widget.Toast;    public class TextWatcherDemo extends Activity {      private TextView mTextView;      private EditText mEditText;      /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          mTextView = (TextView)findViewById(R.id.tv);          mEditText = (EditText)findViewById(R.id.ET);          mEditText.addTextChangedListener(mTextWatcher);      }      TextWatcher mTextWatcher = new TextWatcher() {          private CharSequence temp;          private int editStart ;          private int editEnd ;          @Override          public void beforeTextChanged(CharSequence s, int arg1, int arg2,                  int arg3) {              temp = s;          }                   @Override          public void onTextChanged(CharSequence s, int arg1, int arg2,                  int arg3) {              mTextView.setText(s);          }                   @Override          public void afterTextChanged(Editable s) {              editStart = mEditText.getSelectionStart();              editEnd = mEditText.getSelectionEnd();              if (temp.length() > 10) {                  Toast.makeText(TextWatcherDemo.this,                          "你输入的字数已经超过了限制!", Toast.LENGTH_SHORT)                          .show();                  s.delete(editStart-1, editEnd);                  int tempSelection = editStart;                  mEditText.setText(s);                  mEditText.setSelection(tempSelection);              }          }      };  }

 

你可能感兴趣的:(移动开发)