如何在 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)
}
}
})
我创建了一个 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)
}
}
})