Java android.view.InflateException:二进制XML文件复选框
我已经发布了一个应用程序,我看到一些用户在注册活动中不断出现错误 我得到的错误是:Java android.view.InflateException:二进制XML文件复选框,java,android,checkbox,android-drawable,Java,Android,Checkbox,Android Drawable,我已经发布了一个应用程序,我看到一些用户在注册活动中不断出现错误 我得到的错误是: Fatal Exception: java.lang.RuntimeException Unable to start activity ComponentInfo{com.xxx.yyy/com.xxx.yyy.SignUpActivity}: android.view.InflateException: Binary XML file line #137 in com.xxx.yyy:layout/activ
Fatal Exception: java.lang.RuntimeException
Unable to start activity ComponentInfo{com.xxx.yyy/com.xxx.yyy.SignUpActivity}: android.view.InflateException: Binary XML file line #137 in com.xxx.yyy:layout/activity_sign_up: Binary XML file line #137 in com.xxx.yyy:layout/activity_sign_up: Error inflating class CheckBox
当我转到第137行的layout/activity\u sign\u
时,我得到了以下信息:
<CheckBox
android:id="@+id/cb_showPass"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@drawable/cb_visible_styles"
android:button="@null"
android:scaleX="0.6"
android:scaleY="0.6"
app:layout_constraintBottom_toBottomOf="@+id/et_SignUpPassword"
app:layout_constraintEnd_toEndOf="@+id/et_SignUpPassword"
app:layout_constraintTop_toTopOf="@+id/et_SignUpPassword" />
其中cb_show/cb_hide是png文件:
我想不出是什么原因造成了这个错误。
一些地方说这是因为缩放,一些地方说这是因为密度,无法理解为什么对许多用户来说这是好的,但对一些特定的用户来说不是
一次出现在三星S21上,另一次出现在Nexus 5X上。一次在安卓10上,另一次在安卓8.1上
谢谢你我认为你做了很多麻烦谷歌提供了一个简单的方法来应用下面的显示隐藏密码检查XML
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/passwordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/password"
android:textColorHint="@color/white"
app:endIconTint="@color/edit_text_icon_gray"
app:errorEnabled="true"
app:errorTextColor="@color/error_color"
app:hintTextColor="@color/white"
app:startIconDrawable="@drawable/ic_baseline_lock_24"
app:startIconTint="@color/edit_text_icon_gray"
fancy:endIconMode="password_toggle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="@font/regular_font"
android:inputType="textPassword"
android:padding="20dp"
android:textColor="@color/white"
android:textSize="13sp"
android:theme="@style/MyEditTextStyle2" />
</com.google.android.material.textfield.TextInputLayout>
我想你会遇到很多麻烦。谷歌提供了一种简单的方法来应用下面的显示隐藏密码检查XML
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/passwordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/password"
android:textColorHint="@color/white"
app:endIconTint="@color/edit_text_icon_gray"
app:errorEnabled="true"
app:errorTextColor="@color/error_color"
app:hintTextColor="@color/white"
app:startIconDrawable="@drawable/ic_baseline_lock_24"
app:startIconTint="@color/edit_text_icon_gray"
fancy:endIconMode="password_toggle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="@font/regular_font"
android:inputType="textPassword"
android:padding="20dp"
android:textColor="@color/white"
android:textSize="13sp"
android:theme="@style/MyEditTextStyle2" />
</com.google.android.material.textfield.TextInputLayout>
从可绘制/cb\u可见\u样式中删除第三项标记。然后尝试运行 之前:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
<item android:drawable="@drawable/cb_show" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
</selector>
之后:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
<item android:drawable="@drawable/cb_show" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
</selector>
从可绘制/cb\u可见\u样式中删除第三项标记。然后尝试运行 之前:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
<item android:drawable="@drawable/cb_show" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
</selector>
之后:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
<item android:drawable="@drawable/cb_show" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_show" android:state_checked="false" />
<item android:drawable="@drawable/cb_hide" android:state_checked="true" />
</selector>
我已经测试了您的示例,没有任何崩溃。请尝试将此png的一个版本添加到可绘制nodpi
中,然后查看。。请让我知道我很想知道reason@HenryTwist,当我测试它时,我也不会发生任何崩溃。然而,我在我的Crashlytics日志中得到了它。你用不同密度的设备测试过它吗?@HenryTwist,在Firebase的测试实验室里尝试用不同密度的设备测试过它,我不能说我是否检查过所有的设备。造成该错误的设备是三星Galaxy A21s,据我所知,它的密度在这些密度的某个地方。我已经测试了你的示例,一点故障都没有。尝试将此png的一个版本添加到可绘制nodpi
中,然后查看。。请让我知道我很想知道reason@HenryTwist,当我测试它时,我也不会发生任何崩溃。然而,我在我的Crashlytics日志中得到了它。你用不同密度的设备测试过它吗?@HenryTwist,在Firebase的测试实验室里尝试用不同密度的设备测试过它,我不能说我是否检查过所有的设备。造成该错误的设备是三星Galaxy A21s,据我所知,它的密度在这些密度中的某个位置。这确实是一个很好的解决方案,但我有理由坚持使用EditText+复选框tho=]这确实是一个很好的解决方案,但我有理由坚持使用EditText+复选框tho=]