14

Mam bardzo prosty układ, gdzie używam nowego android.support.design.widget.TextInputLayout widok z Design Support LibraryRuntimeException podczas korzystania z nowego TextInputLayout ze wsparcia projektu biblioteki

<android.support.design.widget.TextInputLayout 
    android:id="@+id/til" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <EditText 
     android:id="@+id/textDialog" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:hint="First Name"/> 
</android.support.design.widget.TextInputLayout> 

Na nadmuchać otrzymuję wyjątek:

Caused by: java.lang.RuntimeException: Failed to resolve attribute at index 18 
      at android.content.res.TypedArray.getColor(TypedArray.java:401) 
      at android.support.design.widget.CollapsingTextHelper.setCollapsedTextAppearance(CollapsingTextHelper.java:166) 
      at android.support.design.widget.TextInputLayout.<init>(TextInputLayout.java:106) 
            at java.lang.reflect.Constructor.newInstance(Native Method) 
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
            at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:381) 
            at android.app.Activity.setContentView(Activity.java:2144) 
            at com.example.trybindinglib.MainActivity.onCreate(MainActivity.java:24) 
            at android.app.Activity.performCreate(Activity.java:5933) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2407) 
            at android.app.ActivityThread.access$800(ActivityThread.java:149) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:211) 
            at android.app.ActivityThread.main(ActivityThread.java:5321) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 
+0

Czy nie był "fill_parent" przestarzały 5 lat temu? To powinno wygenerować jeszcze jedno ostrzeżenie – milosmns

+0

czy znalazłeś poprawkę na ten problem? Otrzymuję ten sam błąd. jeśli znalazłeś problem, możesz go opublikować jako odpowiedź :) – edwinj

+0

Podobny problem: http://stackoverflow.com/questions/35767158/android-edittext-with-textinputlayout-crashing-when-reaching-limit-of -countermax – Jonas

Odpowiedz

5

Upewnij aplikacja motyw rozciąga Motyw AppCompat.

<!-- Base application theme. --> 
    <style name="AppTheme" parent="@style/Theme.AppCompat"> 
     <!-- Customize your theme here. --> 
    </style> 
+0

Kopalnia przedłuża appCompat, ale nadal problem trwa – Darpan

15

Czy dodałeś bibliotekę wsparcia projektu? Dodaj zależność:

compile 'com.android.support:design:22.2.0' 

do build.gradle

4

Miałem ten sam problem w surowym aplikacji wytworzonej z Android Studio.

ja rozwiązałem dodając najpierw następującą zależność do mojego build.gradle skompilować „com.android.support:appcompat-v7:22.2.0”

Potem musiałem zmodyfikować bazę do tematu @ style/Theme.AppCompat zgodnie z sugestią Aleksey. Wskazówka tutaj, że prawdopodobnie będzie musiał zmienić nazwę swojej bazy motywu jako jeden jest o tej samej nazwie (AppTheme) w AppCompat biblioteki, jak i wydaje się pokręcić między nimi ...

Nadzieja to pomaga!

1

awarii GetColor, można spróbować dwóch rzeczy:

1.Instead korzystania EditText, używają android.support.v7.widget.AppCompatEditText. Na przykład:

<android.support.design.widget.TextInputLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:errorEnabled="true"> 
       <android.support.v7.widget.AppCompatEditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="First Name" 
        android:inputType="textPersonName" 
        android:singleLine="true" /> 

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

2.Jeżeli to nie pomoże, to może, ale będzie to usunąć kolor swojego cienia, gdy pole wejściowe jest wybrany. Dodaj:

  app:hintTextAppearance="@android:style/TextAppearance.Small" 

do swojego obiektu TextInputLayout.

+0

Po wypróbowaniu wszystkiego innego, zmiana EditText na AppCompatEditText naprawił mój problem. Dzięki!! – FinHead

1

Upewnij się, że XML wygląda następująco:

<android.support.design.widget.TextInputLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <EditText 
     android:id="@+id/search" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="search" /> 
</android.support.design.widget.TextInputLayout> 

pełny przykład:

http://hmkcode.com/android-textinputlayout/

Brak zmiany themeStyle potrzebne

8

Jeśli używasz Theme.AppCompat jako motywu aplikacji Base, określić textColorError w tym. TextInputLayout potrzebuje go do użycia w jego stanach błędów. Else wyświetli dziennik awarii, tak jak wspomniano powyżej.

przykład:

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="textColorError"> @color/design_textinput_error_color_light </item> 
</style> 

jest @color/design_textinput_error_color_light do AppCompat.Light i @color/design_textinput_error_color_dark do AppCompat.Dark.

+0

Dzięki, to działa. Jeśli chcesz, możesz ustawić dowolny inny kolor, który Ci się podoba. – CoolMind

Powiązane problemy