EditText仿微博统计字数

思路:中文占一个长度,英文占0.5个长度(同时符号区分中英文)。
步骤:
1.EditText添加监听是事件
2.在onTextChanged()方法中计算长度
具体代码如下:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                int contentlength = (int) Math.round(contentLength(s));
                if (contentlength>30){//截取,最大长度为30,超过30截取
                    CharSequence charSequence=s.subSequence(0,start);
                    editText.setText(charSequence);
                    Editable editable =  editText.getText();
                    int selEndIndex = editable.length();
                    Selection.setSelection(editable, selEndIndex);//光标移动到末尾
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

计算长度

    public double contentLength(CharSequence str) {
        double len = 0;
        for (int i = 0; i < str.length(); i++) {
            int temp = str.charAt(i);
            if (temp < 127 && temp > 0) {
                len += 0.5;
            } else {
                len++;
            }
        }
        return len;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,607评论 0 17
  • 很多人都会问职场中最快的成长方式是什么?是拼命学习吗? 我只能说拼命学习是必要的,但是貌似学了可是自己真正掌握了吗...
    爱写作的安小茶阅读 981评论 0 2
  • 2018.10.6 星期六 晴,有风 晚上做的火锅大杂烩,儿子吃的很尽兴,吃饭前做了一张数学卷子,感...
    皓轩爸爸阅读 213评论 0 2
  • 企业名称: 金柳工艺品有限公司 组别:第373期 利他1组 【日精进打卡第 215天】 经典名句 善因种善果 【...
    花半里_5ab7阅读 131评论 0 0
  • 今天是断奶的第三天 桃子还是偶尔会想起 指一指 我就会说妈妈疼 她就扭头走了 每当这个时候 我的心里还是会很难受 ...
    桃子叨诶阅读 207评论 0 0