Мне было интересно, как лучше всего подсчитать количество символов в текстовом поле редактирования в Android. Я смотрел на это, но, похоже, не мог понять этого.
Чтобы описать проблему, у меня есть EditText, и я пытаюсь ограничить количество символов до 150. Я могу сделать это с помощью входного фильтра, однако я хочу показать прямо под текстовым полем количество символов, введенных пользователем (почти как сейчас переполнение стека).
Если бы кто-то мог написать небольшой фрагмент кода-примера или указать мне правильное направление, я был бы очень признателен.
Вы можете выполнять подсчет символов из самого xml с помощью оболочки TextInputLayout для EditText, представленной в SupportLibrary v23.1
Просто оберните свой EditText в TextInputLayout и установите CounterEnabled на true и установите counterMaxLength.
Вы получите существенное влияние , как это
Вы можете использовать counterOverflowTextAppearance , counterTextAppearance для стилизации счетчика.
РЕДАКТИРОВАТЬ
Из документации Android.
Класс TextInputEditText предоставляется для использования в качестве дочернего элемента этого макета. Использование TextInputEditText позволяет TextInputLayout лучше контролировать визуальные аспекты любого ввода текста. Пример использования такой:
TextInputLayout TextInputEditText
источник
Вы можете сделать это
TextInputLayout
и совместить библиотеки с:и заполните:
источник
в xml добавьте этот атрибут для editText
в java добавить этого слушателя
источник
Это очень просто Следуйте инструкциям ниже:
==== Добавьте их в свой импорт ===
===== Определите это =====
========== Внутри при создании =====
источник
источник
Просто установите эти 2 строки
TextInputLayout
в свой XML-файл:источник
Это решение использует
Kotlin
и показывает количество оставшихся символов. Кроме того, если текущее количество символов превышает ограничение в 50, цвет текста изменится на красный.Котлин
Также не забудьте добавить
TextWatcher
в свойEditText
источник
Вы можете добавить счетчик к вашему TextInputEditText, обернутому в TextInputLayout. Как вы можете видеть в примере,
counterEnabled
эта функция включает иcounterMaxLengh
определяет количество символов для нее.источник
Я столкнулся с той же проблемой и попробовал метод Кэмерона. Он работает, но есть небольшая ошибка: если пользователь использует копирование и вставку, он не может подсчитать символы. Поэтому я предлагаю сделать после изменения текста, как показано ниже:
источник
Используйте android: maxLength = "140"
Это должно сработать. :)
надеюсь, это поможет
источник
Попробуйте сделать что-нибудь подобное.
Это решение может быть более производительным, чем получение CharSequence.length. Каждый раз, когда вы нажимаете на программную клавиатуру, событие запускается; поэтому, если вы сделаете длину, он будет каждый раз считать CharSequence, что может замедлиться, если вы начнете попадать в большие CharSequnces. Слушатель событий при изменении текста фиксирует счетчик до и после. Это хорошо работает для значений увеличения и уменьшения
источник
попробуй это
`
источник
Ясный путь;
источник