Set maximum number of text lines for an EditText

前端 未结 6 1361
情书的邮戳
情书的邮戳 2020-12-18 23:51

Is there a way of specifying the maximum numbers of lines for an EditText? By that I mean all the lines of text, not only the visible ones (as the android

6条回答
  •  半阙折子戏
    2020-12-19 00:02

    import android.text.Editable;
    import android.text.TextWatcher;
    import android.widget.EditText;
    
    public class EditTextLinesLimiter implements TextWatcher {
        private EditText editText;
        private int maxLines;
        private String lastValue = "";
    
        public EditTextLinesLimiter(EditText editText, int maxLines) {
            this.editText = editText;
            this.maxLines = maxLines;
        }
    
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            lastValue = charSequence.toString();
        }
    
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
        }
    
        @Override
        public void afterTextChanged(Editable editable) {
            if (editText.getLineCount() > maxLines) {
                int selectionStart = editText.getSelectionStart() - 1;
                editText.setText(lastValue);
                if (selectionStart >= editText.length()) {
                    selectionStart = editText.length();
                }
                editText.setSelection(selectionStart);
            }
        }
    }
    

    And then:

    editText.addTextChangedListener(new EditTextLinesLimiter(editText, 2));
    

提交回复
热议问题