美文网首页Android
EditText设置固定行数

EditText设置固定行数

作者: 合拍v | 来源:发表于2021-02-01 16:11 被阅读0次

     使用EditText默认为我们提供了maxLines的属性,实现了可视范围内的行数限制。如果希望字数超过指定行数不再输入,需要自行监听文字的变化。这里修改afterTextChanged(Editable s),使得文字到达最大行数后不再处理输入的内容。实现如下:

        mEditText.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) {
            
          }
    
          @Override
          public void afterTextChanged(Editable s) {
            int lines = mEditText.getLineCount();
            if (lines > MAX_LINES) {
              String string = s.toString();
              // 获取当前输入位置
              int cursorStart = mEditText.getSelectionStart();
              int cursorEnd = mEditText.getSelectionEnd();
              if (cursorStart == cursorEnd && cursorStart < string.length() && cursorStart >= 1) {
                // 输入位置在字符串中间,前后拼接
                string = string.substring(0, cursorStart - 1) + string.substring(cursorStart);
              } else {
                // 输入位置在末尾则去掉最后一个字符串
                string = string.substring(0, s.length() - 1);
              }
              mEditText.setText(string);
              mEditText.setSelection(mEditText.getText().length());
            } 
          }
        });
    

    相关文章

      网友评论

        本文标题:EditText设置固定行数

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