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());
        }
    };

时间: 2024-09-20 06:29:31

Edittext监听动态改变的相关文章

EditText监听方法,实时的判断输入多少字符_Android

最近在写一个小项目,其中有一点用到了显示EditText中输入了多少个字符,像微博中显示剩余多少字符的功能.在EditText提供了一个方法addTextChangedListener实现对输入文本的监控.下边是我自己写的一个Demo. 代码实现: 布局文件main.xml [html] view plain copy <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi

广播监听-动态注册监听网络变化没显示?

问题描述 动态注册监听网络变化没显示? API 19的是改变了网络状态没吐司.. 解决方案 iOS动态监听网络变化网络变化监听iOS监听网络状态的变化 解决方案二: 首先确保你在工程的清单文件里注册了这个BroadcastReceiver对象,你看看有吗,还有你看看是否要添加某些权限,具体的我忘了. 解决方案三: 确定一下所有配置没有问题吗?

javaSE Swing如何通过事件监听动态生成一个面板

问题描述 我在学校实验室中做一个类似于播放器的项目,遇到的问题就是在Swing中,如何通过点击按钮这种事件动态产生和Remove一个面板,就想一般播放器的右侧里面的播放列表,不过是要产生一个有图像和可以添加删除的面板 解决方案 解决方案二:不太清楚楼主说的意思.不过点击按钮之后去实现他的函数就可以了啊.把楼主需要的面板封装出来.在实现函数里面new一个不就好了.然后再主函数里面再去实现布局之类的.

EditText监听方法,实时的判断输入多少字符

最近在写一个小项目,其中有一点用到了显示EditText中输入了多少个字符,像微博中显示剩余多少字符的功能.在EditText提供了一个方法addTextChangedListener实现对输入文本的监控.下边是我自己写的一个Demo. 代码实现: 布局文件main.xml [html] view plain copy <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi

textwatcher-如何实现TextWatcher同时监听两个EditText?

问题描述 如何实现TextWatcher同时监听两个EditText? 如何实现淘宝登录页面输入框监听,改变登陆按钮状态? 当账号输入框和密码输入框都不为空时,登陆按钮可点击,若有一个输入框为空时,则按钮不可点击? 解决方案 关于EditText中的TextWatcher监听TextWatcher 监听edittext关于EditText中的TextWatcher监听 解决方案二: 我觉得用OnFocusChangeListener()来做会好一点!还可以实现多个EditText的监听.

全面解析Android中对EditText输入实现监听的方法_Android

在 Android design support 包中提供了一种在输入不合适字符时一直显示的提示方式来显示,现在已经开始在更多的应用上被使用了:这些 Android app 在显示他们的错误提示时采用的不同的方式常常让人感觉非常的不和谐. 即这个一直显示的错误消息是在 TextInputLayout 中的 EditText 周围的.这也是,作为一个奖励,提供了材料设计风格中,活泼的浮动标签在一个 APP 的用户体验中常常是最无聊的部分. 这里来讨论如何在你的输入表单上去创建一个通用的.可重用的组

Android EditText 实现监听实例_Android

我们要实现:当EditText的Text改变时,我们希望得到通知,但是可惜的是Android并没有这个监听器,也就无从得知变化了,但我们可以使用TextWatcher类可以帮助我们来实现这个功能. 现有一个id = edit的EditText. 1.定义一个TextWatcher的实例. private TextWatcher watcher = new TextWatcher(){ @Override public void afterTextChanged(Editable s) { //

listview+edittext:如何监听edittext的修改完后的内容

问题描述 listview+edittext:如何监听edittext的修改完后的内容 listview中每个item里放一个edittext,adapter有使用对象的复用,请问如何监听到edittext中内容修改完成后,得到最后修改后的内容,再调用一个方法,然后进行其它处理 解决方案 EditText监听给EditText中的图片加监听 解决方案二: edittext绑定textchagnge的监听就行了 解决方案三: 建议加上一个handle,在每次修改edittext之后发送handle

Android编程实现监听EditText变化的方法_Android

本文实例讲述了Android编程实现监听EditText变化的方法.分享给大家供大家参考,具体如下: 监听EditText中的内容的变化.在EditText没有找到一个setOnxxxx的方法.百度了一下,原来在EditText中有一个方法addTextChangedListner(TextWatcher watcher)方法,用他可以时时监听EditText的内容变化.TextWatcher是一个接口类,所以必须实现TextWatcher里的抽象方法: 当EditText里面的内容有变化的时候