布局中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. */@Overridepublic 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 ;@Overridepublic void beforeTextChanged(CharSequence s, int arg1, int arg2,int arg3) {temp = s;}@Overridepublic void onTextChanged(CharSequence s, int arg1, int arg2,int arg3) {mTextView.setText(s);}@Overridepublic 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);}}}; }











