美文网首页
文字输入限制汉字、表情为一个汉字长度,数字、英文为半个汉字长度

文字输入限制汉字、表情为一个汉字长度,数字、英文为半个汉字长度

作者: 李志江_f244 | 来源:发表于2018-01-19 16:14 被阅读0次

    直接上代码:

    editText.addTextChangedListener(new MaxLengthWatcher(20, editText));

    /**

    * 监听输入内容是否超出最大长度,并设置光标位置

    */

    public class MaxLengthWatcher implements TextWatcher {

        private int maxLen = 20;

        private EditText editText = null;

        private String beforeCharSequence;

        public MaxLengthWatcher(int maxLen, EditText editText) {

            this.maxLen = maxLen;

            this.editText = editText;

        }

        public void afterTextChanged(Editable s) {

            //System.out.println(s);

        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            //System.out.println(s);

            beforeCharSequence = s.toString();

        }

        public void onTextChanged(CharSequence charSequence, int start, int before, int count) {

            if(count <= 0){

                //减少字符

                return;

            }

            int length = 0;

            try {

                byte a[] = charSequence.toString().getBytes("gbk");

                length = a.length;

            }catch (Exception e){

                e.printStackTrace();

            }

            if(length > maxLen){

                //判断加入新的字符后,长度是否超过20

                    editText.removeTextChangedListener(this);

                    editText.setText(beforeCharSequence);

                    editText.setSelection(beforeCharSequence.length());

                    editText.addTextChangedListener(this);

                    return;

            }

        }

    }

    相关文章

      网友评论

          本文标题:文字输入限制汉字、表情为一个汉字长度,数字、英文为半个汉字长度

          本文链接:https://www.haomeiwen.com/subject/qnawyxtx.html