当使用可通过TextInputLayout绘制的密码切换时,android材质库使应用程序崩溃

问题描述

这是我的TextInputLayout和InputEdit(根据错误,login_dialog_layout恰好在第18行):

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/passwordTextLayoutHolder"
        style="@style/TextInputLayoutOutlinedBoxStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        app:passwordToggleEnabled="true"
        app:passwordToggleDrawable="@drawable/ic_eye">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/txtLoginPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password"
            android:inputType="textPassword"
            android:maxLines="1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
    </com.google.android.material.textfield.TextInputLayout>

这是ic_eye:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="@android:color/white"
        android:pathData="M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,-1.34 3,-3 -1.34,-3 -3,-3z" />
</vector>

这是它正在使用的样式:

 <style name="TextInputLayoutOutlinedBoxStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="colorControlnormal">@android:color/white</item>
</style>

我的应用主题也正确地继承自“ Theme.MaterialComponents.DayNight”。这里没有问题。

但是应用程序不断崩溃,经过3个小时的爬网和爬网,我发现passwordToggleDrawable确实是原因,但不仅如此!在其他布局中,如果我将可绘制对象与诸如EditText和Buttons之类的视图一起使用,它也会崩溃。 我认为这可能是因为drawables-v21和drawables-xhdpi(以及其他DPI)所致,所以我删除了所有其他文件夹并再次尝试,但还是没有运气。

我已经迁移到Android X,并使用Android Material 1.2.0,甚至尝试使用beta2 1.3.0,但没有用。 我在棉花糖和棒棒糖上进行了令人惊讶的测试,没有崩溃,因此我可以肯定的是,在加载可绘制对象时,应用程序找不到某些东西。

还在我的build.gardle(应用程序)中添加了:

vectorDrawables.useSupportLibrary = true

这是我得到的错误

    2020-09-03 01:33:01.514 6783-6783/org.zminic.ovido E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.zminic.ovido,PID: 6783
    android.view.InflateException: Binary XML file line #18 in org.zminic.ovido:layout/login_dialog_layout: Binary XML file line #18 in org.zminic.ovido:layout/login_dialog_layout: Error inflating class com.google.android.material.textfield.TextInputLayout
    Caused by: android.view.InflateException: Binary XML file line #18 in org.zminic.ovido:layout/login_dialog_layout: 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:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
        at org.zminic.ovido.activities.Login.showLoginWithEmailDialog(Login.kt:397)
        at org.zminic.ovido.activities.Login.access$showLoginWithEmailDialog(Login.kt:45)
        at org.zminic.ovido.activities.Login$onCreate$4.onClick(Login.kt:80)
        at android.view.View.performClick(View.java:7448)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: android.view.InflateException: Binary XML file line #18 in org.zminic.ovido:layout/design_text_input_end_icon: Binary XML file line #18 in org.zminic.ovido:layout/design_text_input_end_icon: Error inflating class com.google.android.material.internal.CheckableImageButton
     Caused by: android.view.InflateException: Binary XML file line #18 in org.zminic.ovido:layout/design_text_input_end_icon: Error inflating class com.google.android.material.internal.CheckableImageButton
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:657)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at com.google.android.material.textfield.TextInputLayout.<init>(TextInputLayout.java:596)
        at com.google.android.material.textfield.TextInputLayout.<init>(TextInputLayout.java:419)
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
2020-09-03 01:33:01.517 6783-6783/org.zminic.ovido E/AndroidRuntime:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
        at org.zminic.ovido.activities.Login.showLoginWithEmailDialog(Login.kt:397)
        at org.zminic.ovido.activities.Login.access$showLoginWithEmailDialog(Login.kt:45)
        at org.zminic.ovido.activities.Login$onCreate$4.onClick(Login.kt:80)
        at android.view.View.performClick(View.java:7448)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f040005 a=-1}
        at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:997)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:981)
        at android.view.View.<init>(View.java:5535)
        at android.widget.ImageView.<init>(ImageView.java:195)
        at android.widget.ImageButton.<init>(ImageButton.java:86)
        at android.widget.ImageButton.<init>(ImageButton.java:82)
        at androidx.appcompat.widget.AppCompatimageButton.<init>(AppCompatimageButton.java:75)
        at com.google.android.material.internal.CheckableImageButton.<init>(CheckableImageButton.java:56)
        at com.google.android.material.internal.CheckableImageButton.<init>(CheckableImageButton.java:52)

请帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)