2012-07-14 42 views
10

Vorrei sapere come cambiare il colore del bordo della vista EditText in Android a qualcos'altro ...Cambia Colore EditText bordo

Questa è la mia vista EditText:

<EditText 
    android: 
    android:id="@+id/codeEditText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/btnEqual" 
    android:layout_marginTop="20dp" 
    android:ems="10" 
    android:gravity="top|left" 
    android:inputType="textMultiLine|textNoSuggestions" 
    android:scrollbars="vertical" 
    android:singleLine="false" > 

Grazie in anticipo.

risposta

17

Dovrai creare/modificare la tua immagine NinePatch per sostituire quella predefinita e usarla come sfondo del tuo EditText. Se guardi nella tua cartella SDK, sotto la tua piattaforma, quindi res/drawable, dovresti trovare l'immagine di NinePatch per lo stato attivo di EditText. Se è tutto ciò che vuoi cambiare, puoi semplicemente inserirlo in Photoshop, o qualsiasi altro software di editing di immagini che ti piace di più, e cambiare il colore arancione in un colore a tua scelta. Quindi salvare che nella cartella drawable, e costruire un nuovo StateListDrawable, ad esempio, qualcosa di simile al seguito:

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <item 
     android:state_pressed="true" 
     android:drawable="@android:drawable/edittext_pressed" 
     /> <!-- pressed -->  
    <item 
     android:state_focused="true" 
     android:drawable="@drawable/edittext_focused_blue" 
     /> <!-- focused -->  
    <item 
     android:drawable="@android:drawable/edittext_normal" 
     /> <!-- default --> 
</selector> 

Non so due piedi i nomi reali per i NinePatches predefinite per l'EditText, in modo da sostituire quelle, se necessario , ma la chiave qui è usare semplicemente le immagini @android:drawable per quelle che non hai modificato (o puoi copiarle nella cartella drawable del tuo progetto), e quindi usare il tuo drawable modificato per il tuo stato focalizzato.

È quindi possibile impostare questo StateListDrawable come sfondo per il TextView, in questo modo:

<TextView 
    android:background="@drawable/edittext_modified_states" 

Su alcune versioni del sistema operativo, si potrebbe anche essere necessario copiare i normali foto non modificate di stato nelle applicazioni cartella drawable per ottenere questo lavoro. Quindi nelle cartelle disegnabili della tua applicazione hai l'immagine modificata dello stato di messa a fuoco e anche le altre immagini di stato originali non modificate.

+0

+ 1, c'è qualche Stato per ** edittxview.setError ("Error"); ** come Android: state_pressed = "true" (android: state_seterror = "true")! Voglio solo cambiare il colore del bordo quando viene attivato l'avviso di convalida setError! –

+0

questo è quello che sto cercando [change-background-of-edittexts-error-message] (http://stackoverflow.com/questions/14127710/change-background-of-edittexts-error-message) –

0

Devi eseguire l'override della funzione onDraw per farlo. E tu sarai in grado di farlo in una sola riga. Ecco un buon esempio su this presentation alla diapositiva 66.

+1

Questo sarà disegnare un rettangolo sul bordo di edittext. L'OP vuole cambiare il colore a fuoco. –

7

C'è un grande generatore di widget che potrebbe fare tutto il lavoro per voi, ha funzionato benissimo per me.

Devi solo scegliere il tuo colore e quale widget vuoi (EditText per esempio) poi otterrai un file xml nella directory drawable, dovresti impostare questo xml come sfondo del tuo Widget e Fatto!

http://android-holo-colors.com/