EditText maxLines не работает - пользователь все еще может ввести больше строк, чем установлено - PullRequest
106 голосов
/ 17 августа 2011
<EditText 
    android:id="@+id/editText2" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:maxLines="5" 
    android:lines="5">
</EditText>

Пользователь может ввести более 5 строк, нажав клавишу ввода / перехода к следующей строке.Как я могу ограничить ввод пользователя фиксированным количеством строк с помощью EditText?

Ответы [ 16 ]

1 голос
/ 21 марта 2017

Другим способом ограничения EditText одной строкой является следующее:

editText2.setTransformationMethod(new SingleLineTransformationMethod());

Обратите внимание, что после применения этого метода преобразования клавиша ввода создает пробелы при нажатии.Это все еще удовлетворяет вопрос TS.

0 голосов
/ 12 сентября 2018
        <EditText
            android:id="@+id/usrusr"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:lines="1"
            android:maxLines="1"
            android:inputType="text"
            android:hint="@string/inventory_no" />
0 голосов
/ 09 декабря 2016

Попробуйте использовать следующую комбинацию атрибутов EditText внутри XML-файла:

android:singleLine="true"
android:maxLength="22"

0 голосов
/ 29 ноября 2016

Самое простое решение:

android:maxLines="3"

...

 @Override
public void afterTextChanged(Editable editable) {
    // limit to 3 lines
    if (editText.getLayout().getLineCount() > 3)
        editText.getText().delete(editText.getText().length() - 1, editText.getText().length());
}
0 голосов
/ 18 апреля 2013

Для ограничения количества символов мы можем просто использовать свойство maxLength EditText, так как оно не позволит пользователю вводить больше символов.

0 голосов
/ 14 февраля 2013

getLineCount () является одним из вариантов;если вам нужны ненулевые значения, убедитесь, что ваш вид измерен.Для программной клавиатуры onKeyListener не будет работать, поэтому вы должны добавить addTextChangedListener (), которая будет отслеживать изменения текста при вводе.Как только вы получите достаточно строк внутри его обратных вызовов, сделайте все, что захотите, чтобы ограничить его: удалите символы с помощью getText (), setText () или чего-то более причудливого.Вы даже можете ограничить количество символов, используя фильтр.

Другой вариант - отслеживать размер текста с помощью getLineBounds ().Это будет взаимодействовать с текстом gravity / paddign, поэтому будьте осторожны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...