Я хочу сделать EditText
с максимальными строками 2 и максимальной длиной 20. Если длина EditText
больше 10, она должна автоматически перейти к новой строке, чтобы пользователю не нужно было нажимать Войти. Может ли кто-нибудь помочь мне с этим требованием?
EditText автоматически перейдет на новую строку
Ответ 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, но все же показать текст как многострочный
Ответ 2
ДОБАВИТЬ это в ваш XML-код EditText
Android: inputType = "textMultiLine"
При вводе данных будет автоматически перемещен ваш текст на следующую строку.
Ответ 3
Для строк сделайте что-то вроде:
<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
Ответ 4
Чтобы EditText отображал 2 строки. Вы можете написать вот так:
android:maxLength="20"
android:maxLines="2"
android:singleLine="false"
android:layout_width="Your Choice"