I am using TextInputLayout in one of my app layouts. My app is crashing on user's devices with Lollipop(5.1) version and above. Below is the error
android.view.InflateException: Binary XML file line #34: Binary XML file line #2: Error inflating class android.support.design.widget.TextInputLayout arrow_drop_down
Caused by android.view.InflateException: Binary XML file line #34: Binary XML file line #2: Error inflating class android.support.design.widget.TextInputLayout arrow_drop_down
Caused by android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.TextInputLayout arrow_drop_down
Caused by java.lang.reflect.InvocationTargetException: arrow_drop_down
Caused by android.content.res.Resources$NotFoundException: File res/drawable-v21/design_password_eye.xml from drawable resource ID #0x7f0200b1 arrow_drop_down
Caused by android.content.res.Resources$NotFoundException: File res/drawable-v21/avd_show_password.xml from drawable resource ID #0x7f02005c arrow_drop_down
Caused by android.content.res.Resources$NotFoundException: File res/drawable-v21/avd_show_password_1.xml from drawable resource ID #0x7f0201bd arrow_drop_down
Caused by org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag x
I have tried all solutions at StackOverflow but they are not working. This include updating my libraries, using android:theme="@style/Theme.AppCompat"
but my the app is still crashing.
TextInputLayout
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TextInputLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:theme="@style/Theme.AppCompat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edittext_bg"
android:id="@+id/passwordInput"
app:hintTextAppearance="@style/UI.Text.HintText"
app:errorTextAppearance="@style/UI.Text.ErrorText"
android:textColorHint="@color/inputLabelColor"
app:passwordToggleEnabled="true"
app:passwordToggleTint="#000000">
<EditText
android:textSize="18sp"
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:textColorHint="@color/inputLabelColor"
android:textColor="@android:color/black"
android:hint="@string/password_hint"
android:inputType="textPassword"
android:background="@drawable/apptheme_edit_text_holo_light"
/>
</android.support.design.widget.TextInputLayout>
build.gradle
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
testOptions {
unitTests.all {
testLogging {
exceptionFormat = 'full'
}
}
}
productFlavors {
}
}
dependencies {
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.google.android.gms:play-services-auth:9.6.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha6'
}
Kindly help me get rid of this bug. I feel like crying. :(
UPDATE
This files can be found in generated folder. e.g for design_password_eye.xml
it can be found at /app/build/intermediates/exploded-aar/com.android.support/design/25.1.0/res/drawable-v21/design_password_eye.xml
I don't know why then it's declared missing and crashing my app
UPDATE 2
manifest(app)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.r.p">
<uses-sdk tools:overrideLibrary="com.base.ui.auth" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />
<!-- To access Google+ APIs: -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- EXTERNAL_STORAGE permissions are optional for Android 6.0 onwards. -->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="22" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="22" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="com.example.gcm.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
<application
android:name=".activities.AppApplication"
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:screenOrientation="portrait"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:theme">
// Activities here
</application>
</manifest>
Manifest for module auth(com.base.ui.auth)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.base.ui.auth">
<application>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
//activities here
</application>
</manifest>
Styles
app module
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/md_blue_900</item>
<item name="colorAccent">@color/dialog_color</item>
<!--
This overrides the default dark or light dialog background color.
Note that if you use a dark color here, you should set md_dark_theme to
true so text and selectors look visible
-->
<item name="md_background_color">@android:color/transparent</item>
<!--To change the background of options menu-->
<item name="android:itemBackground">@color/app_actionBar</item>
<!--To change the text styling of options menu items</item>-->
<item name="android:itemTextAppearance">@style/itemStyle</item>
<item name="android:listPopupWindowStyle">@style/MyListPopupWindowStyle</item>
<item name="android:actionModeBackground">@color/app_actionBar</item>
<item name="android:actionModeCloseDrawable">@drawable/ic_action_close</item>
</style>
<style name="Toolbar" parent="Base.ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorPrimary">@color/md_white_1000</item>
<!--<item name="android:background">@color/dark_blue</item>-->
</style>
<style name="Toolbar_Popup" parent="Base.ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorPrimary">@color/md_black_1000</item>
<item name="android:background">@color/md_white_1000</item>
</style>
<style name="MyListPopupWindowStyle" parent="@android:style/Widget.Holo.Light.ListPopupWindow">
<item name="android:popupBackground">@color/app_actionBar</item>
<item name="android:textColor">@color/md_black_1000</item>
</style>
<style name="AppTheme.NoActionBar.PR" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@color/md_white_1000</item>
<item name="colorAccent">@color/md_blue_900</item>
</style>
<style name="AppTheme.NoActionBar.PC" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@color/md_white_1000</item>
<item name="colorAccent">@color/md_blue_900</item>
</style>
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:actionModeBackground">@color/app_actionBar</item>
<item name="itemTextAppearance">@style/MyActionBar.MenuTextStyle</item>
</style
>
values-21
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:itemTextAppearance">@style/MyActionBar.MenuTextStyle</item>
<!--To change the background of options menu-->
<item name="android:itemBackground">@color/md_white_1000</item>
</style>
</resources>
styles for module auth
<style name="SplashTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@color/app_background</item>
<item name="colorPrimary">@color/authui_colorPrimary</item>
<item name="colorPrimaryDark">@color/authui_colorPrimaryDark</item>
<item name="colorAccent">@color/authui_colorAccent</item>
<item name="colorButtonNormal">@color/authui_colorPrimary</item>
<item name="android:buttonStyle">@style/UI.Button</item>
<item name="android:editTextStyle">@style/UI.EditText</item>
</style>
<style name="UI.EditText">
<item name="android:textSize">16sp</item>
<item name="android:lineSpacingExtra">8sp</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:fontFamily">sans-serif</item>
<item name="android:colorActivatedHighlight">@color/authui_colorPrimary</item>
<item name="android:colorFocusedHighlight">@color/authui_colorPrimary</item>
</style>
TextInputLayout
,it should have everything it need isn't it? all the drawables it need. it's not my custom library but android's – LisztTextInputLayout
and I need it – Liszt@style/Theme.AppCompat
in yourTextInputLayout
and remove the hints – Milliner@style/Theme.AppCompat
, but my app still clashed. for hints, i need it since this is where users sign in in order to use my app. – Lisztclasspath 'com.android.tools.build:gradle:2.1.0'
– Lisztdrawable/edittext_bg
is indrawable
folder – Liszt