Android EditText的输入监听,输入字符的动态获取

有时候我们可能会用到时时的监听EditText输入字符的时时监听,监听字符的个数,做一些正则表达式的处理等。如下方法可以实现:

我做的是时时的把EditeText输入的数据同步到TextView上

布局文件:

[html] view plain copy
  1. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5. <TextView
  6. android:id="@+id/textview"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:layout_centerHorizontal="true"
  10. android:layout_centerVertical="true"
  11. android:padding="@dimen/padding_medium"
  12. tools:context=".Test02Activity"/>
  13. <EditText
  14. android:id="@+id/editText1"
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. android:layout_alignLeft="@+id/textview"
  18. android:layout_below="@+id/textview"
  19. android:layout_marginTop="31dp"
  20. >
  21. <requestFocus/>
  22. </EditText>
  23. </RelativeLayout>

java代码:

[html] view plain copy
  1. packagecom.example.testdemo;
  2. importandroid.os.Bundle;
  3. importandroid.app.Activity;
  4. importandroid.util.Log;
  5. importandroid.view.Menu;
  6. importandroid.view.MenuItem;
  7. importandroid.widget.EditText;
  8. importandroid.widget.TextView;
  9. importandroid.support.v4.app.NavUtils;
  10. importandroid.text.Editable;
  11. importandroid.text.TextWatcher;
  12. publicclassTest02ActivityextendsActivity{
  13. privatestaticfinalStringTAG="Test";
  14. privateEditTextmEditText;
  15. privateTextViewmTextView;
  16. @Override
  17. publicvoidonCreate(BundlesavedInstanceState){
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_test02);
  20. mEditText=(EditText)findViewById(R.id.editText1);
  21. mTextView=(TextView)findViewById(R.id.textview);
  22. mEditText.addTextChangedListener(newTextWatcher(){
  23. @Override
  24. publicvoidafterTextChanged(Editables){
  25. Log.d(TAG,"afterTextChanged");
  26. }
  27. @Override
  28. publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){
  29. Log.d(TAG,"beforeTextChanged:"+s+"-"+start+"-"+count+"-"+after);
  30. }
  31. @Override
  32. publicvoidonTextChanged(CharSequences,intstart,intbefore,
  33. intcount){
  34. Log.d(TAG,"onTextChanged:"+s+"-"+"-"+start+"-"+before+"-"+count);
  35. mTextView.setText(s);//更新TextView中的内容
  36. //这里要注意的是,如果想改变EditText中的内容的话,就需要先移除EditText中的监听器
  37. //一下代码是实现EditText中输入文本的时候,会先清除EditText中之前的所有内容,并且 //EditText中的内容是4个字符,光标在字符的末尾,最后不要忘了添加监听器
  38. mEditText.removeTextChangedListener(this);
    Stringstr= mEditText.getText().toString();
    mEditText.setText("");
    mEditText.setFilters(newInputFilter[]{newInputFilter.LengthFilter(4)});
    mEditText.setText(getTwoStrDifference(yearEditString,str));
    mEditText.setSelection(editText.length());
    mEditText.addTextChangedListener(this);
  39. }
  40. });
  41. }
  42. @Override
  43. publicbooleanonCreateOptionsMenu(Menumenu){
  44. getMenuInflater().inflate(R.menu.activity_test02,menu);
  45. returntrue;
  46. }
  47. }

你可能感兴趣的:(EditText)