web-dev-qa-db-ja.com

Androidマテリアルチップコンポーネントがアプリをクラッシュさせます。xmlをインフレートできません

試したChip両方のサポートライブラリのコンポーネント
com.google.Android.support:design:28.0.0-rc01および材料
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)`

レイアウト

<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" />`
15
Sourin Ghosh

アプリのテーマを更新して、次のテーマのいずれかを継承します。

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

例えば:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">

注:マテリアルコンポーネントテーマを使用すると、カスタムビューインフレータが有効になります

ソース: https://www.material.io/develop/Android/docs/getting-started/

48
Mikhail Sharin

次のように、XMLレイアウトに@ style/Theme.MaterialComponents.Lightスタイル属性を追加するだけです。

<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"/>
6
Houssin Boulla

次の新しいテーマ属性を既存のアプリテーマに追加します。

<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>

ソース: https://material.io/develop/Android/docs/getting-started/
ありがとう@ Paranoid42

2
Jesus Dasso

最終的に、新しい材料チップを使用してチップを動的に生成する方法としてソリューションを得ました

Googleは、chipsInputレイアウトや、レイアウトのようなGmailアドレスの作成方法に関するドキュメントを提供していません。 ChipDrawableを使用しても、setOnCloseIconClickListenerを呼び出すことができないため、チップオプションでの削除操作は行われません。 Horizo​​ntalScrollView、ChipGroup、EditTextを使用してできました

コードサンプルは次のとおりです。

MaterialChipsInputDemo

1
Sourin Ghosh