EditText автоматически перейдет на новую строку

Я хочу сделать EditText с максимальными строками 2 и максимальной длиной 20. Если длина EditText больше 10, она должна автоматически перейти к новой строке, чтобы пользователю не нужно было нажимать Войти. Может ли кто-нибудь помочь мне с этим требованием?

Ответ 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"