我想将EditText
设置为最多2行并且最多20个字符。如果EditText
的长度超过10个字符,它应该自动换行,这样用户就不需要按Enter键了。有人可以帮我实现这个需求吗?
我想将EditText
设置为最多2行并且最多20个字符。如果EditText
的长度超过10个字符,它应该自动换行,这样用户就不需要按Enter键了。有人可以帮我实现这个需求吗?
将以下内容添加到你的EditText xml代码中:
android:inputType="textMultiLine"
这会在输入数据时自动将文本移到下一行。
可能存在更加优雅的方法,但是这个解决方案可以作为一种线索帮助你实现你想要的内容。首先,你需要将EditText
的值设置如下:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textMultiLine|textCapSentences"
android:maxLength="21"
android:gravity="left"
android:maxLines="2" />
你必须将maxLength
属性设置为21
,因为在EditText中输入换行符会占用一个字符,这意味着用户只能输入19
个字符而不是20
个字符。
然后,你应该使用具有boolean
的TextWatcher
(用于用户删除先前字符的情况),其应如下所示:
// init global boolean
private boolean isReached = false;
// in onCreate method
edittext.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
// if edittext has 10chars & this is not called yet, add new line
if(textEd.getText().length() == 10 && !isReached) {
textEd.append("\n");
isReached = true;
}
// if edittext has less than 10chars & boolean has changed, reset
if(textEd.getText().length() < 10 && isReached) isReached = false;
}
});
注意:然而,您应该小心使用这段代码。实际上,用户仍然可以按下回车键
,然后添加新行。也许这些答案可以帮助您处理它并保持用户“沿着您的道路”:Prevent enter key on EditText but still show the text as multi-line
只需将输入类型更改为 textMultiLine
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"/>
如果要让EditText显示两行,你可以像这样编写代码:
android:maxLength="20"
android:maxLines="2"
android:singleLine="false"
android:layout_width="Your Choice"
对于这些行,做如下操作:
<EditText
android:inputType="textMultiLine" <!-- Multiline input -->
android:lines="2" <!-- Total Lines prior display -->
android:minLines="1" <!-- Minimum lines -->
android:gravity="top|left" <!-- Cursor Position -->
android:maxLines="2" <!-- Maximum Lines -->
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
你也可以尝试调整这个参数(对于 Android <= 3.0 不起作用):
android:singleLine="false"
对于字符数量,可以这样做:
EditText et= (EditText) findViewById(R.id.editText1);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(20); //Filter to 20 characters
et.setFilters(filters);
或者,使用另一个参数:
android:maxLength="20"
在 xml
中
textView.setText("你的文本" + "\n" + "你的文本");