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

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

作者: 李志江_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