This is my app theme:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
I got an inflate error caused by a not using a desired theme. In the Manifest
I didn't overwrite the theme for the activity that I got this error, so the AppTheme definded in styles.xml
is used.
Error:
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)
And this is my 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">
and the EditText style:
<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>
target sdk of the app is 29 and I use material_design_components_version = '1.1.0-alpha08'
EDIT:
from app/gradle
implementation(
"androidx.appcompat:appcompat:$appcompat_version",
"androidx.constraintlayout:constraintlayout:$constraintlayout_version",
"com.google.android.material:material:$material_design_components_version"
)
Manifest:
<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">
Theme:
<!-- 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>
Try in parent layout apply this 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>
This is an example,for complete using, put in your app style the parent,Exemple:
<style name="MyApp" parent="Theme.MaterialComponents">