InflateException при использовании TextInputLayout
Эта часть журнала запуска:
Я вырезал этот журнал с помощью DexPathList, который содержит много путей к файлам apk, например:
Мои зависимости build.gradle:
7 ответов
Столкнулся с этой проблемой при внедрении AndroidX в моем существующем проекте.
Макет XML
Старый стиль
Новый стиль
Спасибо за ваши ответы. Проблема заключалась в том, что я использовал com.google.android.material.textfield.TextInputLayout . Если вы используете этот элемент управления, вы должны добавить в свои зависимости:
В моем случае я переписываю свой xml на android.support.design.widget.TextInputLayout :
Кроме того, я добавил в свои зависимости:
Это устранило мою проблему.
Эта ошибка возникает, когда
«app:passwordToggleEnabled=»true» or app:passwordToggleTint=»#fff» находится в com.google.android.material.textfield.TextInputLayout .
Удалив, он работает.
Он может быть установлен программно:
вы должны изменить
build.gradle файл в
xml файл в
MainActivity.java
После выполнения всех этих шагов, перечисленных здесь, я все еще сталкивался с той же проблемой рендеринга, но я решил запустить приложение на устройстве, чтобы посмотреть, что произойдет,
И хотя предварительный просмотр в Android Studio показывал материальный компонент как обычный EditText и показывал несколько предупреждений, он был правильно отображен на самом устройстве.
Таким образом, чтобы спасти людей, запустив эту ошибку некоторое время (для меня это был час потрачен впустую), просто попробуйте на устройстве!
Источник
TextInputLayout
Макет TextInputLayout сначала появился в библиотеке Android Design Support Library и добавляет немного красоты к текстовому полю. Когда пользователь начинает вводить текст в текстовом поле, то подсказка, заданная в этом компоненте, всплывает над ним в специальном TextView. Пример можно увидеть на видео.
Библиотека больше не развивается, поэтому используйте AndroidX, которую я и буду теперь использовать в описании.
Компонент можно найти на панели инструментов в разделе Text.
При добавлении компонента через визуальный редактор автоматически добавляется дочерний элемент TextInputEditText.
Так выглядел компонент в составе Support Library.
Подсказку не обязательно указывать в атрибуте android:hint у текстового поля. Можно программно присвоить через метод:
Стилизация
В AndroidX у компонента появились новые стили: OutlinedBox, FilledBox. Можете самостоятельно запустить пример с двумя стилями и посмотреть на отличия.
Далее идёт текст для старой версии статьи. Вам следует самостоятельно обновить нужные фрагменты кода.
Общая стилизация доступна следующим образом. Пропишем стили в styles.xml:
Обработка ошибки
Предыдущий пример показывал применение подсказки. Но также можно выводить сообщения об ошибке. Здесь потребуется написать немного кода. За вывод ошибки отвечает атрибут app:errorEnabled. Назначим текстовому полю тип клавиатуры и однострочный текст. При наборе текста после нажатия на клавишу Enter проверяем длину текста. Если текст меньше четырёх символов, то выводим сообщение об ошибке.
Текст ошибки выводится снизу от текстового поля.
Стиль для сообщения об ошибке можно стилизовать. Добавим новый атрибут.
В файле стилей res/values/styles.xml добавим новый стиль:
Теперь выводится другим цветом.
Расширенный вид стилей:
Применяем через атрибуты app:errorTextAppearance и android:theme.
Счётчик символов
С помощью атрибутов app:counterEnabled и app:counterMaxLength можно установить счётчик символов с указанием предела, который будет выводиться под текстовым полем.
Когда будет превышен лимит, то цвет счётчика изменится. Этот цвет можно стилизовать через стиль.
Стиль применяется к атрибуту app:counterOverflowTextAppearance:
TextInputEditText
Казалось бы простой компонент, никаких трудностей не возникает. Но не торопитесь. Стоит повернуть устройства в альбомный режим, как текстовое поле растянется на весь экран и никакой подсказки вы не увидите. Возможно, это баг, который когда-нибудь починят. Но проблему легко решить, если вместо стандартного EditText использовать специальный компонент из библиотеки TextInputEditText:
Источник