你的位置:首页 > 操作系统

[操作系统]android EditText监听和长度监测事件


<??><!-- 定义基础的LinearLayout布局 --><LinearLayout ="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical" >  <!-- 定义EditText文本输入框 -->  <EditText    android:id="@+id/Et"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:hint="请输入用户名:"/>  <!-- 定义Button按钮屏幕区域 -->  <Button    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:onClick="myclick"    android:text="点击我,检测用户名合法性!"/>  <!-- 定义TextView文本标签 -->  <TextView    android:id="@+id/Tv"    android:layout_width="fill_parent"    android:layout_height="fill_parent"/></LinearLayout>

package com.example.yanlei.yl2;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.DialogInterface.OnKeyListener;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.util.Log;import android.widget.TextView;import android.widget.EditText;import android.view.View;import android.widget.Toast;public class MainActivity extends AppCompatActivity {  //定义TextView对象  private TextView Tv;  //定义EditText对象  private EditText Et;  @Override  public void onCreate(Bundle savedInstanceState) {    //当创建此Activity的时候回调    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    findView();    Et.addTextChangedListener(new EditChangedListener());  }  private void findView() {    // 得到当前布局的控件对象    Tv = (TextView) findViewById(R.id.Tv);    Et = (EditText) findViewById(R.id.Et);  }  //在  public void myclick(View v) {    //得到用户输入的用户名,得到长度    int len = Et.getText().toString().length();    //根据输入的用户名的长度,做出对应的提示。    if (len > 5 && len < 9) {      Tv.setText("用户名合法,长度为:" + len);    } else {      Tv.setText("用户名长度非法,长度为:" + len);    }  }  class EditChangedListener implements TextWatcher {    private CharSequence temp="";//监听前的文本    private int editStart;//光标开始位置    private int editEnd;//光标结束位置    private final int charMaxNum = 10;    boolean DEBUG = false;    String TAG = "测试:";    @Override    public void beforeTextChanged(CharSequence s, int start, int count, int after) {      if (DEBUG)        Log.i(TAG, "输入文本之前的状态");      temp = s;    }    @Override    public void onTextChanged(CharSequence s, int start, int before, int count) {      if (DEBUG)        Log.i(TAG, "输入文字中的状态,count是一次性输入字符数");      Tv.setText("还能输入" + (charMaxNum - s.length()) + "字符");    }    @Override    public void afterTextChanged(Editable s) {      if (DEBUG)        Log.i(TAG, "输入文字后的状态");      try {        if (temp.length() > charMaxNum) {          Toast.makeText(getApplicationContext(), "你输入的字数已经超过10了限制!", Toast.LENGTH_LONG).show();        }      } catch (Exception ex) {      }    }  }}