TextWatcher的用法

来源:互联网 发布:nginx.var set lua 编辑:程序博客网 时间:2024/06/05 23:01
TextWatcher:EditText输入时进行监听,可以进行判断输入是否合法
案例:
public class MainActivity extends AppCompatActivity {    private TextView tv;    private EditText et;    private CharSequence temp;    private int mEditStart;    private int mSelectionEnd;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv = (TextView) findViewById(R.id.tv);        et = (EditText) findViewById(R.id.et);        //EditText输入时设置监听        et.addTextChangedListener(new TextWatcher() {            /**             * 文本变化之前调用             * @param s             * @param start             * @param count             * @param after             */            @Override            public void beforeTextChanged(CharSequence s, int start, int count, int after) {                Log.e("xyh", "beforeTextChanged:" + "" + count + "个字符从" + start + " 位置开始  已经被" + after + "个字符所替换");                temp = s;            }            /**             * 文本变化的时候调用             * @param s             * @param start             * @param before             * @param count             */            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {                Log.e("xyh", "onTextChanged" + "" + count + "个字符仅仅从" + start + "开始要替换" + before + "个旧的字符");                tv.setText("输入的结果为:" + s);            }            /**             * 文本变化之后调用             * @param s             */            @Override            public void afterTextChanged(Editable s) {                Log.e("xyh", "afterTextChanged" + "最终内容:" + s.toString());                mEditStart = et.getSelectionStart();                mSelectionEnd = et.getSelectionEnd();                if (temp.length() > 10) {                    Toast.makeText(MainActivity.this, "输入的字数不能超过10", Toast.LENGTH_SHORT).show();                    //输入10个后不能再输入                    s.delete(mEditStart - 1, mSelectionEnd);                    int tempSelection = mEditStart;                    et.setText(s);                    et.setSelection(tempSelection);                }            }        });    }}