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/tech/app/5634.html

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

相关推荐

发表回复

登录后才能评论

WordPress 数据库错误: [Duplicate entry '82-4d3f5343d1f1b32d21fd4fb47d88d6b2' for key 'task_id_source_url_key']
insert into wp_autoblog_queue(task_id,source_url,source_url_key,create_date_time,not_check_stoped,post_interval) values(82,'https://www.idc.net/help/os/linux/page/6438/','4d3f5343d1f1b32d21fd4fb47d88d6b2',1735085744,0,0)