Подтвердить что ты не робот

Не удалось раздуть ColorStateList, оставив его в фреймворке java.lang.UnsupportedOperationException: невозможно преобразовать в цвет: type = 0x2

У меня есть часть входа, и я использую TextInputLayout для электронной почты и пароля. Оба они одинаковы. Также я использую привязку данных для отображения сообщения об ошибке.

Ошибка происходит в API <20, когда он должен показывать подсказку об ошибке.

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

xml layout:

        <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 ошибка при раздувании макета в фрагменте, но только на Samsung Galaxy и Note 4

4b9b3361

Ответ 1

Итак, я закончил с этим решением, которое работает для меня.

В TextInputLayout добавьте эту строку

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

И добавьте новый стиль в styles.xml

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