2013-05-02 17 views
14

Non è bello quando si usa EditText enabled = "false". Come posso cambiarlo automaticamente per tutti i controlli?Come modificare lo stile predefinito di EditText disabilitato?

Ho aggiunto questa immagine per riferimento.

Qualcuno può aiutarmi? Grazie.

+0

Hai impostato l'attributo 'android: background =" .... "' a 'EditText'? –

+0

Se cambio android: background in style.xml cambia tutto EditText, non solo disabilitato. Mi piacerebbe sapere se posso modificare lo stile predefinito-disabilitato-EditText, non uno alla volta. –

risposta

27

Nel file di colore definiscono il colore:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:color="@color/disabled_color" /> 
    <item android:color="@color/normal_color"/> 
</selector> 

Nel layout:

<EditText 
    android:text="whatever text you want" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@color/example" /> 
</EditText> 
+0

Ho bisogno di entrambi gli stati, abilitato e disabilitato. Se provo con il tuo codice (adattato) il mio edittext rimane invisibile (perché non ottiene parametri corretti.) E log mi mostra questo errore: tag richiede un attributo 'drawable' o tag figlio che definisce un drawable –

+0

How posso farlo programmaticamente .. ?? – Moinkhan

+0

I selettori devono essere definiti nella directory 'drawable' (non' color'). –

36

creare un selettore personalizzato in drawable e impostarlo come

<EditText android:textColor="@drawable/edit_text_selector" />

1) in 'colors.xml' d efine il colore per lo stato abilitato e disabilitato:

<color name="enabled_color">#F7FE2E</color> 
<color name="disabled_color">#000000</color> 

2) in 'drawable/edit_text_selector.xml':

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:color="@color/disabled_color"/> 
    <item android:color="@color/normal_color"/> 
</selector> 

3) nel layout.xml:

<EditText 
    android:id="@+id/customEditText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:enabled="false" 
    android:text="Hello!" 
    android:textColor="@drawable/edit_text_selector" /> 
+0

Avvincente approccio !. Molte grazie! – KinGPinG

+0

So che è vecchio, ma @ color/normal_color dovrebbe probabilmente essere @ color/enabled_color – dan

Problemi correlati