簡體   English   中英

膨脹錯誤 class com.google.android.material.textfield.TextInputLayout

[英]Error inflating class com.google.android.material.textfield.TextInputLayout

這是我的應用主題: <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">

由於未使用所需的主題,我收到了一個膨脹錯誤。 Manifest中,我沒有覆蓋出現此錯誤的活動的主題,因此使用了 styles.xml 中定義的styles.xml

錯誤:

 android.view.InflateException: Binary XML file line #122: Binary XML file line #122: Error inflating class com.google.android.material.textfield.TextInputLayout
    Caused by: android.view.InflateException: Binary XML file line #122: Error inflating class com.google.android.material.textfield.TextInputLayout
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
        at android.view.LayoutInflater.createView(LayoutInflater.java:647)
      ...
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).
        at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:240)
        at com.google.android.material.internal.ThemeEnforcement.checkMaterialTheme(ThemeEnforcement.java:215)
        at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:143)
        at com.google.android.material.internal.ThemeEnforcement.obtainTintedStyledAttributes(ThemeEnforcement.java:116)

這是我的 xml:

  <com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/inputFirstName"
                        style="@style/EditText.OutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="16dp"
                        android:layout_marginTop="10dp"
                        android:layout_marginEnd="16dp"
                        android:visibility="gone"
                        app:boxStrokeColor="@color/colorBrand"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent">

和 EditText 樣式:

 <style name="EditText.OutlinedBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
        <item name="android:minHeight">56dp</item>
        <item name="android:textSize">18sp</item>
        <item name="android:fontFamily">@font/nunito_regular</item>
        <item name="android:textColorHint">@color/colorTextSecondary</item>
        <item name="hintTextColor">@color/colorBrand</item>
        <item name="hintEnabled">true</item>
    </style>

應用程序的目標 sdk 是 29,我使用material_design_components_version = '1.1.0-alpha08'

編輯:

來自app/gradle

    implementation(
        "androidx.appcompat:appcompat:$appcompat_version",
        "androidx.constraintlayout:constraintlayout:$constraintlayout_version",
        "com.google.android.material:material:$material_design_components_version"
)

顯現:

<application
    android:name=".application.BaseApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:usesCleartextTraffic="true">

主題:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowLightStatusBar">true</item>
    <item name="android:fontFamily">@font/nunito_regular</item>
    <item name="android:lineSpacingExtra">0dp</item>
    <item name="android:includeFontPadding">false</item>
    <item name="navigationIcon">@drawable/ic_back_dark</item>
    <item name="android:windowBackground">@color/colorWhite</item>
    <item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
</style>

嘗試在父布局中應用此樣式:

android:theme="@style/Theme.MaterialComponents.DayNight.DarkActionBar"

   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:orientation="vertical"
        android:theme="@style/Theme.MaterialComponents.DayNight.DarkActionBar">
        <com.google.android.material.textfield.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
        <com.google.android.material.textfield.TextInputEditText
       
        </com.google.android.material.textfield.TextInputLayout>
   </LinearLayout>

這是一個示例,為了完整使用,請在您的應用程序樣式中添加父項,例如:

<style name="MyApp" parent="Theme.MaterialComponents">

我遇到了同樣的問題。 這是我解決它的方法。 我實現了這個

implementation 'com.google.android.material:material:1.0.0'

然后我改變了風格

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
 launchFragmentInContainer<LoginFragment>(themeResId =R.style.AppTheme)

在構造函數中添加主題!!

我面臨同樣的問題。 問題出在材料版本上。 嘗試更改您的版本 alpha06,它應該會修復它。

implementation 'com.google.android.material:material:1.1.0-alpha06'

我面臨同樣的問題。 我重建了應用程序,它奏效了!!!

檢查你的主題 inheritance,在我的例子中,我繼承了 material 組件的淺色主題和 material3 的深色主題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM