Edittext监听动态改变详解手机开发

方法一:

         // 输入框限制输入字数

        editText.addTextChangedListener(new TextWatcher() {

            private CharSequence temp;

            private boolean isEdit = true;

            private int selectionStart ;

            private int selectionEnd ;

            @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) {

            }

            

            @Override

            public void afterTextChanged(Editable s) {

                 selectionStart = editText.getSelectionStart();

                selectionEnd = editText.getSelectionEnd();

                Log.i(“gongbiao1”,””+selectionStart);

                if (temp.length() > Constant.TEXT_MAX) {

                    Toast.makeText(KaguHomeActivity.this,

                            R.string.edit_content_limit, Toast.LENGTH_SHORT)

                            .show();

                    s.delete(selectionStart-1, selectionEnd);

                    int tempSelection = selectionStart;

                    editText.setText(s);

                    editText.setSelection(tempSelection);

                }

            }

        });

      方法二:

         利用EditText可以设置filter的特性,自定义一个LengthFilter,当输入字数超过限制时 ,做出自定义的提示

          // 输入框限制输入字数

        InputFilter[] filters = new InputFilter[1];

        filters[0] = new InputFilter.LengthFilter(Constant.TEXT_MAX) {

            @Override

            public CharSequence filter(CharSequence source, int start, int end,

                    Spanned dest, int dstart, int dend) {

                if (source.length() > 0 && dest.length() == Constant.TEXT_MAX) {

                    if ((System.currentTimeMillis() – toastTime) > interval) {

                        toastTime = System.currentTimeMillis();

                        Toast

                                .makeText(KaguHomeActivity.this,

                                        R.string.edit_content_limit,

                                        Toast.LENGTH_SHORT).show();

                    }

                }

                if (dest.toString().equals(

                        getResources().getString(R.string.input_default_txt))) {

                    Bundle data = new Bundle();

                    data.putCharSequence(“source”, source);

                    Message message = textHandler.obtainMessage();

                    message.setData(data);

                    message.sendToTarget();

                }

                return super.filter(source, start, end, dest, dstart, dend);

            }

        };

        editText.setFilters(filters);

private Handler textHandler = new Handler() {

        @Override

        public void handleMessage(Message msg) {

            Bundle data = msg.getData();

            CharSequence source = data.getCharSequence(“source”);

            editText.setTextColor(Color.BLACK);

            editText.setText(source);

            editText.setSelection(source.length());

        }

    };

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5634.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论