2017-06-22 9 views
11

Mam część logowania i używam TextInputLayout do wysyłania wiadomości e-mail i hasła. Oba są takie same. Używam również powiązania danych, aby wyświetlić komunikat o błędzie.Nie można nadmuchać elementu ColorStateList, pozostawiając go w strukturze java.lang.UnsupportedOperationException: Nie można przekonwertować na kolor: type = 0x2

Błąd występuje w interfejsie API < 20, gdy powinien wskazywać wskazówkę dotyczącą błędu. Układ

@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> 

jako tło używam login_edittext.xml

<solid android:color="@color/white" /> 

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

muszę sprawdzić podobne odpowiedzi, ale większość z nich są związane z stylów

Can't convert to color: type=0x2 error when inflating layout in fragment but only on Samsung Galaxy and Note 4

+0

Witam, znaleźliście rozwiązanie tego? Mam też do czynienia z tym w lollipop. –

+0

Przepraszam za spóźnioną odpowiedź, dodałem moje rozwiązanie, które w końcu działa dla mnie – aleksandrbel

+0

powinieneś zaakceptować odpowiedź –

Odpowiedz

13

Tak, skończyłem z tym rozwiązaniem, który pracuje dla mnie.

Aby TextInputLayout dodać ten ciąg

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

I dodać nowy styl styles.xml

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

Nie działa dla mnie ... Jakieś pomysły? – user7856586

+0

Czy możesz podać więcej informacji na temat problemu? – aleksandrbel

+0

Problem był w metodzie onConfigureChanged w wersji BaseActivty, w której ustawiłem początkowe ustawienia lokalizacji i sprawiłem, że nie była ona poprawna, więc nie działała. Teraz jest OK. Dzięki. – user7856586

Powiązane problemy