Error inflating class com google android material textfield textinputlayout

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 и показывал несколько предупреждений, он был правильно отображен на самом устройстве.

Читайте также:  Виджет whatsapp для андроид

Таким образом, чтобы спасти людей, запустив эту ошибку некоторое время (для меня это был час потрачен впустую), просто попробуйте на устройстве!

Источник

android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.google.android.material.textfield.TextInputLayout #4610

Comments

thrlr123 commented Feb 7, 2019 •

On migrating to Android with robolectric 4.1 and with FragmentScenario for testing fragments in isolation, I am seeing an issue when I try to run this:

The text was updated successfully, but these errors were encountered:

thrlr123 commented Feb 7, 2019

You closed this PR
#4496
suggesting to changing my app theme to be a descendant of AppCompat but it is already has been using the AppCompat theme. Also, please note that I migrated to androidX and using FragmentScenario to test my fragment. I am still getting this error.

thrlr123 commented Feb 7, 2019 •

This article suggests that if you are not using the material theme then add the style (Scroll to section 5. Add a Material component to your app in the link below )
https://material.io/components/android/docs/getting-started/

So. I changed it to:

but still no luck. @xian

jongerrish commented Feb 8, 2019

@thrlr123 — Can you double check that you have a valid theme set on the fragment?

If you add this code / print to console / debug:-

This should return the textual name of the theme set on your Activity. Obviously as per the error you need a theme of Theme.AppCompat (or a descendant).

If you don’t have a valid theme set, then the question is why not.

Theme’s can be directly set on Activities:-

Читайте также:  Повторяет за голосом андроид

but in this case, it looks like you are testing your Fragment in isolation, so this isn’t possible for you.

If there is no theme defined for the activity (and you are using a test container activity) then the fall back is the application’s theme.

to double check what theme was set in the application check:-

thrlr123 commented Feb 8, 2019 •

@jongerrish
Added the code suggested by you to get the theme in my fragment and this is what I got:
com.xxxxxxxx.xxxxxxxxxx:style/FragmentScenarioEmptyFragmentActivityTheme.

And the application theme is:
android:style/Theme.DeviceDefault.Light.DarkActionBar

I think it is because I am testing the fragment in isolation. Do you have any idea on how to approach this?

Источник

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:

Источник

Оцените статью