2016-02-10 19 views
8

Ho progettato un InputTextLayout personalizzato che contiene un Edittext personalizzato. Questo Edittext personalizzato estende "AppCompatEdittext". Anche il mio MainActivity estende AppCompatActivity. Ma ancora non sono in grado di mostrare i messaggi di errore usando TextInputLayout. Di seguito sono riportati i frammenti di codice di vari file.InputTextLayout Metodo setError() in Android non funzionante

main.xml

<android.support.design.widget.TextInputLayout 
      android:id="@+id/last_name_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/first_name_layout" 
      android:layout_marginLeft="25dp" 
      android:layout_marginRight="25dp" 
      android:layout_marginTop="12dp" 
      android:background="@drawable/grey_button_normal" 
      android:hint="Last name" 
      android:minHeight="48dp" 
      android:paddingTop="3dp" 
      android:theme="@style/TextLabel"> 

      <com.feebite.widgets.StyleableEditText 
       android:id="@+id/lastname_edittext" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_gravity="center_vertical" 
       android:background="@android:color/transparent" 
       android:gravity="center_vertical" 
       android:minHeight="48dp" 
       android:nextFocusDown="@+id/email_edittext" 
       android:paddingBottom="10dp" 
       android:paddingLeft="15dp" 
       android:singleLine="true" 
       android:textColor="@color/darkish_grey" 
       android:textColorHint="@color/darkish_grey" 
       android:textCursorDrawable="@null" 
       android:textSize="18sp" /> 

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

MainActivity.java

mLastNameLayout = (TextInputLayout) findViewById(R.id.last_name_layout); 
mLastNameLayout.setHint("Last name"); 
mLastNameLayout.setErrorEnabled(true); 

tema personalizzato da styles.xml

<style name="TextLabel" parent="TextAppearance.AppCompat"> 
     <!-- Hint color and label color in FALSE state --> 
     <item name="android:textColorHint">@color/darkish_grey</item> 
     <!-- Label color in TRUE state and bar color FALSE and TRUE State --> 
     <item name="colorAccent">@color/darkish_grey</item> 
     <item name="colorControlNormal">@color/darkish_grey</item> 
     <item name="colorControlActivated">@color/dark_pink</item> 
    </style> 

E l'errore visualizzato.

FATAL EXCEPTION: main 
                  Process: com.feebite, PID: 18611 
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.feebite/com.feebite.userRegisteration.SignUpActivity}: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 24: TypedValue{t=0x3/d=0x45a "res/color/secondary_text_material_light.xml" a=1 r=0x106011e} 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                   at android.os.Looper.loop(Looper.java:148) 
                   at android.app.ActivityThread.main(ActivityThread.java:5417) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117) 
                   Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 24: TypedValue{t=0x3/d=0x45a "res/color/secondary_text_material_light.xml" a=1 r=0x106011e} 
                   at android.content.res.TypedArray.getColor(TypedArray.java:447) 
                   at android.content.res.XResources$XTypedArray.getColor(XResources.java:1033) 
                   at android.widget.TextView.<init>(TextView.java:738) 
                   at android.widget.TextView.<init>(TextView.java:671) 
                   at android.widget.TextView.<init>(TextView.java:667) 
                   at android.widget.TextView.<init>(TextView.java:663) 
                   at android.support.design.widget.TextInputLayout.setErrorEnabled(TextInputLayout.java:380) 
                   at com.feebite.userRegisteration.SignUpActivity.onCreate(SignUpActivity.java:59) 
                   at android.app.Activity.performCreate(Activity.java:6251) 
                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
                   at android.app.ActivityThread.-wrap11(ActivityThread.java)  
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
                   at android.os.Handler.dispatchMessage(Handler.java:102)  
                   at android.os.Looper.loop(Looper.java:148)  
                   at android.app.ActivityThread.main(ActivityThread.java:5417)  
                   at java.lang.reflect.Method.invoke(Native Method)  
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
                   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)  
+1

'java.lang.UnsupportedOperationException: Impossibile risolvere l'attributo nell'indice 24: TypedValue' –

+0

@IntelliJAmiya come sarà il tuo suggerimento di aiutarmi? – AndroidMech

+0

Penso che, la modifica del testo sia un problema con il codice precedente, la modifica del testo non è supportata, selezionare questo collegamento http://stackoverflow.com/questions/30953449/design-android-edittext-to-show-error-message-as- descritto da google –

risposta

27

tenta di impostare i seguenti attributi troppo:

<item name="android:textColorHighlight">@color/Your color</item> 
<item name="android:textColorLink">@color/Your color</item> 
+0

Questo mi ha aiutato esattamente lo stesso problema. –

+0

Niente stava funzionando per me .... Ma questo ha risolto il mio problema ... grazie @David Kisida – FaisalAhmed

+0

Questo mi ha aiutato pure. Grazie .. –

3

avuto esattamente lo stesso problema e nessuna delle risposte risolto. Ciò che veramente funzionato è stato la rimozione di questo: parent="TextAppearance.AppCompat"

+0

Non funziona per me – Rafa0809

0

Ci sono diversi attributi si potrebbero utilizzare per il vostro TextInputLayout, come

  • app:errorEnabled: Per passare la visibilità di errore e utilizzare una stringa vuota quando dovrebbe essere visualizzato alcun errore . Potremmo anche usare setError (null).

  • app:errorTextAppearance: aspetto del testo per il testo dell'errore. Potremmo usare qualcosa come @ style/TextInputLayout.ErrorText.

  • app:hintTextAppearance: aspetto del testo per il testo suggerimento. Potremmo usare qualcosa come @ style/TextInputLayout.HintText.

dove:

<style name="TextInputLayout"/> 

<style name="TextInputLayout.ErrorText"> 
    <item name="textColorError">#FFD50000</item> 
</style> 

<style name="TextInputLayout.HintText"> 
    <item name="android:textColor">?attr/colorPrimary</item> 
    <item name="android:textSize">@dimen/text_tiny_size</item> 
</style> 

Quello che stai cercando è app:errorTextAppearance. È anche possibile utilizzare android:theme per rendere il piccolo EditText (hint) del contenitore ereditare la configurazione del tema dell'applicazione.

Problemi correlati