我有一个我想使用的EditText,所以人们可以输入一个简短的生物。
所以我试图让它固定在,例如,一个4行高的盒子。我不希望它用输入“缩放”或“移位” - 我试图通过自动换行使其成为固定行数的固定框。
我确实尝试添加lines="4"
和maxLines="4"
以及inputType="textCapSentences|textMultiLine"
,但似乎并不正确。当我设置文本时,它出现在EditText的中间(而不是左上角),它似乎让我输入了很多,所以我可以在第一行中有一个单词,然后是一个像20行一样的字符
当前XML:
<EditText
android:background="#00ff00"
android:id="@+id/editTextId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="4"
android:maxLines="4"
android:inputType="textCapSentences|textMultiLine"
android:gravity="left|top"/>
我正在使用绿色背景,所以我现在可以更容易地看到它。现在,这可以让你输入你想要的数量,但我想把它限制在给定的空间。
答案 0 :(得分:1)
修复居中文字问题add:
android:gravity="top|left"
为防止用户输入超过4行,您需要按代码进行操作。
将TextWatcher
添加到EditText
,并检查每次文字更改后的行数:
TextWatcher textWatcher = new TextWatcher() {
onTextChanged(CharSequence s, int start, int before, int count) {
// Check number of lines here
}
};
editText.addTextChangedListener(textWatcher);
答案 1 :(得分:1)
没有内置代码来实现您的需求。但这是一个解决方法 -
private String enteredText;
edtText.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) {
if (edtText.getLineCount() > 4) {
edtText.setText(enteredText);
edtText.setSelection(edtText.getText().length()); //This statement is to move the cursor at the end of the text otherwise it'll be moved to the start of the text.
}
else {
enteredText = edtText.getText().toString();
}
}
});
希望这会有所帮助!!
答案 2 :(得分:0)
只需将此属性添加到您的edittext
即可 android:inputType="textMultiLine"