Android material chip component crashing app. Unable to inflate xml
Solution 1
Update your app theme to inherit from one of these themes:
Theme.MaterialComponents
Theme.MaterialComponents.NoActionBar
Theme.MaterialComponents.Light
Theme.MaterialComponents.Light.NoActionBar
Theme.MaterialComponents.Light.DarkActionBar
For example:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
Note: Using a Material Components theme enables a custom view inflater
Source: https://www.material.io/develop/android/docs/getting-started/
Solution 2
You can juste add @style/Theme.MaterialComponents.Light style attribut in xml layout like this:
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="chip"
android:theme="@style/Theme.MaterialComponents.Light"/>
Solution 3
Add the following new theme attributes to your existing app theme:
<style name="Theme.MyApp" parent="Theme.AppCompat">
<!-- Original AppCompat attributes. -->
<item name="colorPrimary">@color/my_app_primary_color</item>
<item name="colorPrimaryDark">@color/my_app_primary_dark_color</item>
<item name="colorAccent">@color/my_app_accent_color</item>
<!-- New MaterialComponents attributes. -->
<item name="colorSecondary">?attr/colorPrimary</item>
<item name="scrimBackground">@color/mtrl_scrim_color</item>
<item name="textAppearanceHeadline1">@style/TextAppearance.MaterialComponents.Headline1</item>
<item name="textAppearanceHeadline2">@style/TextAppearance.MaterialComponents.Headline2</item>
<item name="textAppearanceHeadline3">@style/TextAppearance.MaterialComponents.Headline3</item>
<item name="textAppearanceHeadline4">@style/TextAppearance.MaterialComponents.Headline4</item>
<item name="textAppearanceHeadline5">@style/TextAppearance.MaterialComponents.Headline5</item>
<item name="textAppearanceHeadline6">@style/TextAppearance.MaterialComponents.Headline6</item>
<item name="textAppearanceSubtitle1">@style/TextAppearance.MaterialComponents.Subtitle1</item>
<item name="textAppearanceSubtitle2">@style/TextAppearance.MaterialComponents.Subtitle2</item>
<item name="textAppearanceBody1">@style/TextAppearance.MaterialComponents.Body1</item>
<item name="textAppearanceBody2">@style/TextAppearance.MaterialComponents.Body2</item>
<item name="textAppearanceCaption">@style/TextAppearance.MaterialComponents.Caption</item>
<item name="textAppearanceButton">@style/TextAppearance.MaterialComponents.Button</item>
<item name="textAppearanceOverline">@style/TextAppearance.MaterialComponents.Overline</item>
</style>
Source: https://material.io/develop/android/docs/getting-started/
Thanks @Paranoid42
Solution 4
Finally Got a solution as how to generate chips dynamically using new material chips
Google has not provided any documentation for chipsInput layout or how to make a gmail address like layout. Using ChipDrawable won't give delete operation on chip option as can't call setOnCloseIconClickListener. I was able to do using HorizontalScrollView, ChipGroup and EditText
Here's my code sample :
Solution 5
You can use Theme.MaterialComponents.**.Bridge
to replace your previous theme.
For example, if the old theme is Theme.AppCompat.DayNight.NoActionBar
, the new theme will be Theme.MaterialComponents.DayNight.NoActionBar.Bridge
.
See https://material.io/develop/android/docs/getting-started#bridge-themes
Comments
-
Sourin Ghosh almost 2 years
Tried Chip component from both support library
com.google.android.support:design:28.0.0-rc01
and material
com.google.android.material:material:1.0.0-rc01
StackTrace
android.view.InflateException: Binary XML file line #72: Binary XML file line #72: Error inflating class com.google.android.material.chip.Chip at android.view.LayoutInflater.inflate(LayoutInflater.java:551) at android.view.LayoutInflater.inflate(LayoutInflater.java:429)`
Layout
<com.google.android.material.chip.Chip android:id="@+id/chip" style="style/Widget.MaterialComponents.Chip.Entry" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/account" app:closeIconEnabled="true" />`
-
Sourin Ghosh over 5 yearsYes initially that was the problem.. I was using appcompat theme
-
OhhhThatVarun over 4 yearsI was wondering why any of
com.google.android.material
widget is not inflating in the app. This is the reason! -
RamPrasadBismil about 4 yearsAdding these shows a black screen when using the chip but doesnt crash atleast
-
Suhas Wagre about 4 yearsThanks! It works like a charm without changing the App Theme attribute.
-
ibyte over 3 yearsSaved me many hours of head-scratching. God bless you man
-
rmirabelle over 3 yearsIn my case,
val chip = new Chip(context)
andval chip = layoutInflater.from(context).inflate
were both failing despite my material theme. This is because I passed the wrongcontext
(application context instead of activity context). Therefore, my material theme wasn't yet applied. -
NehaK about 3 yearsgetting The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).
-
Zhou Hongbo over 2 years*.Bridge is better for most cases. "If you use a bridge theme, you can start using Material Design components without changing your app theme" material.io/develop/android/docs/getting-started#bridge-themes