51 votes

Le composant de puce Android Material fait planter l'application. Impossible d'inflater le fichier XML.

Essayé Chip composant à la fois de la bibliothèque de support
com.google.android.support:design:28.0.0-rc01 et matérielle
com.google.android.material:material:1.0.0-rc01

StackTrace

android.view.InflateException: Fichier XML binaire ligne #72 : Fichier XML binaire 
      ligne #72 : Erreur d'inflation de la classe com.google.android.material.chip.Chip 
      à android.view.LayoutInflater.inflate(LayoutInflater.java:551)
      à android.view.LayoutInflater.inflate(LayoutInflater.java:429)`

Layout

`

0 votes

Avez-vous essayé avec implementation 'com.android.support:design:28.0.0-rc01'

0 votes

Oui, je l'ai fait. Même problème

0 votes

Vérifiez ma réponse

111voto

Mikhail Sharin Points 342

Mettez à jour le thème de votre application pour hériter de l'un de ces thèmes :

Theme.MaterialComponents
Theme.MaterialComponents.NoActionBar
Theme.MaterialComponents.Light
Theme.MaterialComponents.Light.NoActionBar
Theme.MaterialComponents.Light.DarkActionBar

Par exemple :

</code></pre>

<blockquote>
  <p>Remarque : l'utilisation d'un thème Material Components permet à un inflateur de vue personnalisé</p>
</blockquote>

<p>Source:
<a href="https://www.material.io/develop/android/docs/getting-started/" rel="noreferrer">https://www.material.io/develop/android/docs/getting-started/</a></p></x-turndown>

1 votes

Je me demandais pourquoi aucun des widgets com.google.android.material ne se gonfle dans l'application. Voici la raison!

1 votes

M'a fait gagner de nombreuses heures de prise de tête. Dieu te bénisse mec

0 votes

Dans mon cas, val chip = new Chip(context) et val chip = layoutInflater.from(context).inflate ont tous deux échoué malgré mon thème matériel. Cela est dû au fait que j'ai passé le mauvais context (le contexte de l'application au lieu du contexte de l'activité). Par conséquent, mon thème matériel n'était pas encore appliqué.

70voto

Houssin Boulla Points 219

Vous pouvez simplement ajouter l'attribut de style @style/Theme.MaterialComponents.Light dans la mise en page xml comme ceci :

2 votes

Merci! Ça fonctionne à merveille sans changer l'attribut Thème de l'application.

0 votes

Obtenir le style sur ce composant nécessite que le thème de votre application soit Theme.MaterialComponents (ou un descendant).

5voto

Jesus Dasso Points 59

Ajoutez les nouveaux attributs de thème suivants à votre thème d'application existant:

    <!-- Attributs AppCompat d'origine. -->
    <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>

    <!-- Nouveaux attributs MaterialComponents. -->
    <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>

Source: https://material.io/develop/android/docs/getting-started/
Merci @Paranoid42

0 votes

Oui, initialement c'était le problème.. J'utilisais le thème appcompat

0 votes

Ajouter ces éléments affiche un écran noir lors de l'utilisation de la puce, mais au moins ne plante pas.

4voto

Sourin Ghosh Points 613

Enfin trouvé une solution sur la façon de générer des jetons dynamiquement en utilisant de nouveaux jetons de matériaux

Google n'a pas fourni de documentation pour la disposition de chipsInput ou comment créer une disposition similaire à une adresse gmail. Utiliser ChipDrawable ne permettra pas d'effectuer une opération de suppression sur l'option chip car on ne peut pas appeler setOnCloseIconClickListener. J'ai pu le faire en utilisant HorizontalScrollView, ChipGroup et EditText

Voici un exemple de mon code :

MaterialChipsInputDemo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X