布局中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); } } };}
原文链接:http://www.cnblogs.com/vus520/archive/2012/06/25/2561611.html