<EditText
android:id="@+id/editText2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:maxLines="5"
android:lines="5">
</EditText>
Пользователь может ввести более 5 строк, нажав клавишу ввода / следующей строки. Как я могу ограничить ввод пользователя фиксированным количеством строк с помощью EditText?
android
android-layout
android-edittext
Индрек Кыуэ
источник
источник
Ответы:
Атрибут
maxLines
соответствует максимальной высотеEditText
, он контролирует внешние границы, а не внутренние текстовые строки.источник
Вам просто нужно убедиться, что у вас установлен атрибут inputType. Без этой строчки не работает.
источник
inputType
наtext
. Спасибо за то, что сэкономили мое время :-)Это не решает общую проблему ограничения n строками. Если вы хотите ограничить свой EditText одной строкой текста, это может быть очень просто.
Вы можете установить это в XML-файле.
или программно
источник
@Cedekasem, вы правы, встроенного «ограничителя строк» нет. Но я построил его самостоятельно, поэтому, если кому-то интересно, код ниже. Приветствия.
источник
Я сделал то, что вы, ребята, искали. Вот мой
LimitedEditText
класс.Особенности:
не доведет вас до конца - он останется там, где вы были.
Я отключаю слушателя, потому что каждый вызов
setText()
метода будет рекурсивно вызывать эти 3 метода обратного вызова в случае, когда пользователь превысил лимит символов или строк.Код:
источник
beforeCursorPosition = getSelectionStart();
вafterTextChanged
обратном вызове. Он работает лучше , потому что , когда набравe
после вводаabcd
, то EditText может «думать» заменитьabcd
сabcde
, из - за метода ввода причины.Я сделал для этого более простое решение: D
Вы можете изменить значение 3 в соответствии
txtSpecialRequests.getLineCount() > 3
с вашими потребностями.источник
Вот InputFilter, который ограничивает допустимые строки в EditText:
Чтобы добавить его в EditText:
источник
Вот что я использовал в своем проекте:
И это сработало во всех сценариях
источник
установить editText
android:inputType="text"
источник
Самое простое решение:
...
источник
источник
это один подход. Может кому-нибудь помочь.
источник
Еще один способ ограничить вас
EditText
одной строкой:Обратите внимание, что после применения этого метода преобразования клавиша ввода создает пробелы при нажатии. Это все еще отвечает на вопрос TS.
источник
Вы можете ограничить свой текст в соответствии с вашим количеством строк, я говорю около 37 алфавитов в одной строке
источник
getLineCount () - один из вариантов; если вы хотите, чтобы там были ненулевые значения, убедитесь, что ваше представление измерено. Для мягкой клавиатуры onKeyListener не будет работать, поэтому вам нужно добавить addTextChangedListener (), который будет отслеживать изменения текста по мере ввода. Как только вы получите достаточно строк внутри его обратных вызовов, сделайте все, что хотите, чтобы его ограничить: удалите символы с помощью getText (), setText () или что-то более необычное. Вы даже можете ограничить количество символов с помощью фильтра.
Другой вариант - контролировать размер текста с помощью getLineBounds (). Это будет взаимодействовать с гравитацией текста / paddign, так что будьте осторожны.
источник
Для ограничения количества символов мы можем просто использовать свойство maxLength EditText, так как оно не позволит пользователю вводить больше символов.
источник
источник
Другая идея: каждый раз после набора новый текст будет сохраняться в String lastText, только если количество строк не превышает MAX_LINES. Если это так, мы бы установили текст EditText на последний добавленный текст (так что изменения будут удалены) и уведомим пользователя, чтобы он оставался коротким.
источник
Это продолжение ответа Индрека Кыуэ на Котлин.
источник
Попробуйте использовать следующую комбинацию атрибутов EditText внутри файла xml:
android:singleLine="true"
android:maxLength="22"
источник
android:inputType
заменяет использованиеandroid:singleLine