Ответ 1
Он должен существовать самым элегантным способом, но это решение может помочь вам как ключ к достижению того, что вы хотите. Прежде всего, вам нужно будет установить значения 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
, потому что в Enter char (новая строка) будет один char в edittext, тогда пользователь сможет писать 19
вместо 20
.
Затем вы должны использовать TextWatcher
с boolean
(используется, если пользователь удаляет предыдущие символы), и это должно быть следующим образом:
// 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;
}
});
Примечание: Однако вы должны быть осторожны с этим кодом. Действительно, пользователь все еще может нажать Key Enter
, а затем добавить новые строки. Возможно, эти ответы помогут вам справиться с этим и сохранить пользователя только "на вашем пути": Предотвратить ввод ключа в EditText, но все же показать текст как многострочный