Edittext监听动态改变

简介: 方法一:          // 输入框限制输入字数         editText.addTextChangedListener(new TextWatcher() {             private CharSequence temp;             private boolean isEdit = true;             private in
方法一:
         // 输入框限制输入字数
        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());
        }
    };
目录
相关文章
|
3月前
当监听的属性是对象的引用时,`watch`选项是否会触发监听?
当监听的属性是对象的引用时,`watch`选项是否会触发监听?
13 2
|
9月前
|
Android开发
Android中保存当前按钮的状态 按back键返回之后再次进入没有改变
Android中保存当前按钮的状态 按back键返回之后再次进入没有改变
47 0
|
Android开发
关于EditText屏蔽焦点的问题,及为什么clearFocus()方法失效了?
我们有时候的需求时,EditText 在不需要的时候,无法点击,或者取消它的默认焦点。
145 0
关于EditText屏蔽焦点的问题,及为什么clearFocus()方法失效了?
|
存储 缓存 索引
更好的 RecyclerView 表项子控件点击监听器
上篇介绍了一种新的监听 RecyclerView 表项点击事件的方法。实现了将点击事件和RecyclerView.Adapter解耦。这一篇介绍如何监听 RecyclerView 表项子控件点击事件。
556 0
|
XML 编解码 数据格式
如何正确设置动态TextView的textSize
如何正确设置动态TextView的textSize
161 0
如何正确设置动态TextView的textSize
|
Android开发
EditText默认不获取焦点,隐藏软键盘,焦点监听,输入监听,样式设置
EditText默认不获取焦点,隐藏软键盘,焦点监听,输入监听,样式设置
704 0
SwiftUI—如何实现对视图显示和消失事件的监听
SwiftUI—如何实现对视图显示和消失事件的监听
592 0
SwiftUI—如何实现对视图显示和消失事件的监听
绑定元素属性改变不通知界面
原文:绑定元素属性改变不通知界面 情景假设:绑定的是一个Point,当Point的X或者Y属性发生改变时,绑定的点也随界面改变 此时界面不会发生改变 原因:当X或者Y属性发生改变时并没有触发Point的Set方法   1 2 3 ...
597 0
|
Android开发
Android 网络改变状态监听
1. 网络状态改变使用静态注册还是动态注册 回答: 动态注册。因为当App关闭后,我们的应用将不再关心网络状态的改变了。 2. 添加必须的权限 3.
1105 0