美文网首页
限制EditText输入行数

限制EditText输入行数

作者: 小哲 | 来源:发表于2017-04-10 17:09 被阅读170次

    网上看了很多资源,发现不符合要求,在中间插入字符,光标都会移动到最后,自己修改了部分代码,暂时没发现问题,贴出来记录下。

    private TextWatcher watcher = new TextWatcher() {
        String tmp;
        int cursor;
    
        @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 line = editText.getLineCount();
            if (line > MAX_LINE) {
                if (before > 0 && start == 0) {
                    if (s.toString().equals(tmp)) { 
                         // setText触发递归TextWatcher
                        cursor--;
                    } else { 
                        // 手动移动光标为0
                        cursor = count - 1;
                    }
                } else {
                    cursor = start + count - 1;
                }
            }
        }
    
        @Override
        public void afterTextChanged(Editable s) {
            // 限制可输入行数
            int line = editText.getLineCount();
            if (line > MAX_LINE){
                String str = s.toString();
                tmp = str.substring(0, cursor) + str.substring(cursor + 1);
                editText.setText(tmp);
                editText.setSelection(cursor);
            }
        }
    };
    

    相关文章

      网友评论

          本文标题:限制EditText输入行数

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