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());
        }
    };
目录
相关文章
|
5月前
mac zsh: command not found: pip解决方法
mac zsh: command not found: pip解决方法
223 0
|
前端开发 Android开发
使用Android Studio(AS)查看apk信息
使用Android Studio(AS)查看apk信息
503 0
使用Android Studio(AS)查看apk信息
|
7月前
|
算法 安全 Java
android逆向必备工具
android逆向必备工具
97 0
|
Java API Maven
手把手教你使用Gradle脚本上传代码仓库
手把手教你使用Gradle脚本上传代码仓库
784 0
手把手教你使用Gradle脚本上传代码仓库
|
存储 Java API
Android即时通讯设计——腾讯IM接入和WebSocket接入
之前项目的群聊是用数据库直接操作的,体验很差,消息很难即时反馈,所以最后考虑到了使用腾讯的IM完成群聊的接入,不过中途还是有点小坎坷的,接入完成之后发现体验版一个群聊只有20人,当时看到体验版支持100个用户也就忍了,现在一个群聊只能20用户,忍不了了,所以暂时找到了**WebSocket**作为临时的解决方案(等有钱了再换),同时支持50个用户在线聊天,也算还行,勉强够用,下面就介绍两种实现方案的接入,正文即将开始~~
396 0
Android即时通讯设计——腾讯IM接入和WebSocket接入
|
Android开发 前端开发
Android DataBinding 的使用姿势
Android DataBinding 的使用姿势
|
XML Android开发 数据格式
Android ProgressBar进度条,以及自定义显示
Android ProgressBar进度条,以及自定义显示
360 0
Android ProgressBar进度条,以及自定义显示
|
API Android开发 开发者
AppCompat 用了这么久,你真的了解吗?
为了能够让低版本的Android系统能够运行新特性,AppCompat框架自Support时代就已推出。但随着AndroidX的一统江湖,AppCompat的相关类则一并迁移到了AndroidX库里。
461 0
|
Python
【开发环境】Mac 中 IntelliJ IDEA 运行 Python 程序 ( 安装 Python Community Edition 插件 )
【开发环境】Mac 中 IntelliJ IDEA 运行 Python 程序 ( 安装 Python Community Edition 插件 )
548 0
【开发环境】Mac 中 IntelliJ IDEA 运行 Python 程序 ( 安装 Python Community Edition 插件 )
Fragment Or DialogFragment Can not perform this action after onSaveInstanceState
转载自Fragment Or DialogFragment Can not perform this action after onSaveInstanceState 表现 可会造成app崩溃掉,具体日志如下: 异常如下: java.
2658 0