InputFilter: какво е това, интерфейс InputFilter и филтриране в Android

Автор: IT Sectr Публикувано: 2026-07-08 Време за четене: 5 мин

InputFilter е интерфейс Android SDK, който позволява да прихващате и модифицирате въведения текст, преди да бъде показан в EditText. Разработчикът задава правила за филтриране. Според Android Developers, 2026, InputFilter се използва за ограничаване на въвеждането на букви, цифри, специални символи и автоматично форматиране на текст. За разлика от TextWatcher, филтърът работи преди промяната на текста.

Основни моменти

  • InputFilter — Android интерфейс за ограничаване и форматиране на вход в EditText и TextView.
  • Методът filter се вика преди промяната на текста и връща филтриран CharSequence или null.
  • InputFilter.LengthFilter — стандартна реализация за ограничаване на максималната дължина на текста.
  • Персонализирани филтри позволяват да забраните определени символи.

Какво е InputFilter и защо е нужен?

InputFilter е функционален интерфейс от пакета android.text. Основната цел на InputFilter е предотвратяване на неправилно въвеждане. Методът filter приема шест параметра. Ако методът връще null, промяната се приема. Ако връще празен низ „“, промяната се блокира. InputFilter не променя оригиналния източник на данни.

Как работи InputFilter

Например, ако потребителят се опита да въведе буквата „а“ в поле, където са разрешени само цифри, филтърът връща „“. InputFilter не променя оригиналния източник на данни.

Стандартни филтри в Android SDK

Android SDK предоставя няколко вградени реализации на InputFilter. Най-разпространеният е InputFilter.LengthFilter. InputFilter.AllCaps преобразува всички въведени символи в главни букви.

ФилтърЦелПример
LengthFilterОграничаване на дължинатаПоле за име до 50 символа
AllCapsПреобразуванеПоле за пощенски код
ПерсонализиранПроизволни правилаСамо цифри

Създаване на персонализиран InputFilter

За да създадете персонализиран филтър, трябва да реализирате интерфейса InputFilter. Примерът на филтър DigitsInputFilter преминава през всички символи на въведения текст и запазва само цифрите.

kotlin
class DigitsInputFilter : InputFilter {
    override fun filter(
        source: CharSequence?,
        start: Int,
        end: Int,
        dest: Spanned?,
        dstart: Int,
        dend: Int
    ): CharSequence? {
        val sb = StringBuilder()
        for (i in start until end) {
            val c = source?.get(i)
            if (c != null && Character.isDigit(c)) {
                sb.append(c)
            }
        }
        return if (sb.length == end - start) null else sb
    }
}

Прилагане на InputFilter към EditText

Филтрите се настрояват на EditText чрез setFilters(InputFilter[]). В примера са настроени два филтъра: DigitsInputFilter и LengthFilter.

kotlin
val editText = findViewById<EditText>(R.id.phone_input)
editText.filters = arrayOf(
    DigitsInputFilter(),
    InputFilter.LengthFilter(10)
)

InputFilter и валидация на входа

InputFilter и TextWatcher изпълняват различни функции. InputFilter работи на ниво на входа, TextWatcher работи след входа.

КритерийInputFilterTextWatcher
МоментПреди промянаСлед промяна
ЦелБлокиранеРеакция, UI
ВръщанаФилтриран текстНяма (void)
ПрилаганеsetFilters()addTextChangedListener()

Често задавани въпроси

Каква е разликата?

InputFilter прихваща входа преди промяната. TextWatcher се вика след промяната.

Как да приложа няколко филтъра?

Предайте масив на setFilters().

Може ли да се използва за форматиране?

Да, InputFilter може да модифицира входа.

Какви символи могат да се забранят?

Всяки: интервали, букви, цифри, Unicode.

Работи ли програмно?

Не, InputFilter работи само при въвеждане от потребителя.

Резюме

  • InputFilter — Android интерфейс за филтриране на входа.
  • Методът filter връща null, „“ или нов CharSequence.
  • LengthFilter и AllCaps — стандартни филтри.
  • Персонализирани филтри чрез реализация на InputFilter.
  • Верига от филтри за комбиниране.
  • InputFilter и TextWatcher си допълват.
  • Програмна промяна не минава през InputFilter.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също