main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/entry" android:layout_marginTop="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:id="@+id/txtview1" android:layout_width="fill_parent" android:textSize="25.0dp" android:gravity="center" android:layout_height="wrap_content" android:text="TextWatcher" /> </LinearLayout>
MaxLengthWatcher.java:
public class MaxLengthWatcher implements TextWatcher { private int maxLen = 0; private EditText editText = null; public MaxLengthWatcher(int maxLen, EditText editText) { this.maxLen = maxLen; this.editText = editText; } public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub Editable editable = editText.getText(); int len = editable.length(); if(len > maxLen) { int selEndIndex = Selection.getSelectionEnd(editable); String str = editable.toString(); //Interception of a new string String newStr = str.substring(0,maxLen); editText.setText(newStr); editable = editText.getText(); int newLen = editable.length(); if(selEndIndex > newLen) { selEndIndex = editable.length(); } //Set the new cursor position Selection.setSelection(editable, selEndIndex); } } }
TextWatcherActivity.java :
public class TextWatcherActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText editText = (EditText) findViewById(R.id.entry); editText.addTextChangedListener(new MaxLengthWatcher(10, editText)); } }
Download Source Code: AndroidTextWatcher
0 comments:
Post a Comment