如何在 EditText 中恰好写两行?

How to write exactly two lines in EditText?

我创建了一个 TextInputEditText 可以让你做简单的笔记。

我已将 maxlines="2"inputType="textMultiLine" 设置为最多写入两行。

但是,当你开始写的时候有两行,view的大小设置为适合两行的大小,但是你可以继续写文字。

换句话说,你可以写2行以上的文字。

我该如何解决这个问题?


正常

写两行(增加视图大小以适应最多两行)

写两行以上(可滚动)

XML*

<com.google.android.material.textfield.TextInputLayout
    style="@style/Custom.TextInputLayout.OutlinedBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint_memo"
        android:inputType="textMultiLine"
        android:maxLines="2" />
</com.google.android.material.textfield.TextInputLayout>

不幸的是,maxLines 对应于编辑区域的外部高度,而不是内部的实际文本 您可能想使用 TextWatcher 方法将输入限制为您想要的任意行数

    textInput.addTextChangedListener(object : TextWatcher {
        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
        }
        override fun afterTextChanged(s: Editable?) {
            // find how many rows it cointains
            val editTextRowCount = textInput.lineCount
            if (editTextRowCount > 2) {
                textInput.text?.delete(textInput.selectionEnd - 1,textInput.selectionStart)
            }
        }
    })