Скрытие паролей в NickServ и борьба с багами внутри EditText

Сейчас я реализовал автоматическое скрытие вводимых паролей, которые вы указываете в службе NickServ для авторизации никнеймов, а также включил поддержку многострочного текста для EditText.

Реализация автоскрытия паролей основана на классе NickServPasswordTransform, производного от PasswordTransformationMethod из Android API, который заменяет введенный пароль на звездочки или кружочки, но при этом остается видимым только самой программе.

У этой реализации есть и ограничения:

1. PasswordTransformationMethod плохо работает с многострочным текстом.

Обойти ограничение можно путем переключения на режим многострочного текста и отключением самого PasswordTransformationMethod от EditText, оставив PasswordTransformationMethod только для однострочного текста.

2. Стандартный режим многострочного текста в Android тоже подвержен багом.

Если EditText содержит хотя бы одну длинную из двух и более строк, то изменение высоты EditText приводит к тому, что в родительском лейауте будет оставлено пустое пространство снизу.

Проблему не решает ни отключение выравнивания по строкам, ни слушателем OnGlobalLayoutListener. Только через инкапсуляцию функции onMeasure внутри EditText. Код данной функции находится на четвертом скриншоте

P. S. У меня почему-то опять появился подборок внизу EditText, хотя если не указывать lineCount в exactHeight, то все нормально, при этом умещается только одна строка.

Скрытие паролей в NickServ и борьба с багами внутри EditText | Сетка — социальная сеть от hh.ru Скрытие паролей в NickServ и борьба с багами внутри EditText | Сетка — социальная сеть от hh.ru Скрытие паролей в NickServ и борьба с багами внутри EditText | Сетка — социальная сеть от hh.ru Скрытие паролей в NickServ и борьба с багами внутри EditText | Сетка — социальная сеть от hh.ru