Android

EditText设置固定行数

2021-02-01  本文已影响0人  合拍v

 使用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());
        } 
      }
    });
上一篇下一篇

猜你喜欢

热点阅读