无法解压缩ColorStateList,交由框架处理 java.lang.UnsupportedOperationException: 无法将类型为0x2的内容转换为颜色

21

我有一个登录部分,使用TextInputLayout输入电子邮件和密码。两者都相同。我还使用数据绑定来显示错误消息。

问题发生在API<20时,应该显示错误提示。

    @Override
    public void showEmailError() {
        inputLayoutEmail.setError(sInvalidEmail);
    }

XML布局:

        <android.support.design.widget.TextInputLayout
            android:id="@+id/til_email"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_marginLeft="@dimen/default_margin_16dp"
            android:layout_marginRight="@dimen/default_margin_16dp"
            android:layout_marginTop="16dp"
            android:layout_below="@id/login_img_logo"
            android:layout_centerHorizontal="true"
            android:textColorHint="@color/gray"
            android:background="@drawable/login_edittext"
            android:errorEnabled="@{viewmodel.obEmailErrorVisibility}"
            >

            <EditText
                android:id="@+id/et_login"
                android:layout_height="@dimen/login_view_height"
                android:layout_width="@dimen/login_view_width"
                android:inputType="text"
                android:maxLength="50"
                android:hint="@string/activity_login_hint_email"
                android:text="@={viewmodel.email}"
                android:textColor="@color/black"
                android:textColorHint="@color/gray"
                android:paddingLeft="@dimen/default_margin_16dp"
                android:enabled="@{viewmodel.obIsEmailFieldEnabled}"
                />

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/til_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/default_margin_16dp"
            android:layout_marginRight="@dimen/default_margin_16dp"
            android:layout_marginTop="@dimen/default_margin_8dp"
            android:layout_below="@id/til_email"
            android:layout_centerHorizontal="true"
            android:textColorHint="@color/gray"
            android:background="@drawable/login_edittext"
            android:errorEnabled="@{viewmodel.obPassErrorVisibility}"
            >

            <EditText
                android:id="@+id/et_password"
                android:layout_width="@dimen/login_view_width"
                android:layout_height="@dimen/login_view_height"
                android:hint="@string/activity_login_hint_password"
                android:maxLength="50"
                android:inputType="textPassword"
                android:text="@={viewmodel.password}"
                android:textColor="@color/black"
                android:textColorHint="@color/gray"
                android:paddingLeft="@dimen/default_margin_16dp"
                android:enabled="@{viewmodel.obIsPassFieldEnabled}"
                />

        </android.support.design.widget.TextInputLayout>
作为背景,我使用login_edittext.xml
<solid android:color="@color/white" />

<corners
    android:radius="@dimen/login_edittext_radius"
    />

我查看了类似的答案,但它们大多与样式有关。

在片段中膨胀布局时,无法将类型转换为颜色:type=0x2错误,但仅在三星Galaxy和Note 4上出现


嗨,你找到解决办法了吗?我在棒棒糖中也遇到了这个问题。 - Sharp Edge
抱歉回复晚了,我已经添加了最终适合我的解决方案。 - aleksandrbel
你应该接受你的答案。 - Sharp Edge
1个回答

22

所以,我已经完成了对我有效的这个解决方案。

对于,添加这个字符串

app:errorTextAppearance="@style/MyAppTheme.TextInputLayout"

并在 styles.xml 中添加新样式

    <style name="MyAppTheme.TextInputLayout" parent="@android:style/TextAppearance">
         <item name="android:textColor">@color/red</item>
    </style>

你能否提供更多有关这个问题的信息? - aleksandrbel
问题出在BaseActivty的onConfigureChanged方法中,我设置了本地化的初始设置并且设置不正确,导致它无法正常工作。现在已经解决了。谢谢。 - Roman Soviak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接