Come impostare in modo programmatico drawableRight su Android Edittext?


86

Conosco set drawableRight in XML. ma ho richiesto di farlo a livello di programmazione perché è cambiato secondo alcune condizioni.


9
Usa setCompoundDrawablesWithIntrinsicBounds () per EditText.
Piyush

Risposte:


261

È possibile utilizzare la funzione di seguito:

editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.drawableRight, 0);

oppure (se vuoi passare il drawable stesso invece del suo ID)

editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context,R.drawable.drawableRight), null)

L'ordine dei parametri corrispondenti alla posizione disegnabile è: sinistra, in alto, a destra, in basso


1
come posso assegnare un ID a quel disegnabile? fondamentalmente voglio aggiungere un ascoltatore tattile a quello specifico drawable
Thorvald Olavsen

@ Lawrence Choy ciao signore, come controllare che l'immagine sia già uscita o no. Per favore aiutami in questo caso, e come cambiare il colore dell'immagine.
Gowthaman M

8

Trova ulteriori qui

EditText myEdit = (EditText) findViewById(R.id.myEdit);
myEdit.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon, 0);  
// where params are (left,top,right,bottom)

Puoi anche impostare il riempimento disegnabile a livello di codice:

myEdit.setCompoundDrawablePadding("Padding value");

ciao signore, come controllare che l'immagine sia già uscita o meno, per favore aiutatemi in questo caso e come cambiare il colore dell'immagine
Gowthaman M

4

Prova come di seguito:

Drawable img = getContext().getResources().getDrawable( R.drawable.smiley );
EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

Modificare :

 int img = R.drawable.smiley;
 EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

4

Provare:

EditText editFirstname = (EditText) findViewById(R.id.edit_fname);
Drawable icUser = getResources().getDrawable(R.drawable.ic_user);
editFirstname.setCompoundDrawablesWithIntrinsicBounds(null, null, icUser, null);

Quindi puoi aggiungere un ascoltatore tattile a quel disegno specifico.


2
int img = R.drawable.smiley;
editText.setCompoundDrawables( null, null, img, null );

Spiegato qui

setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)

Imposta i Drawable (se presenti) in modo che appaiano a sinistra, sopra, a destra e sotto il testo. Usa 0 se non vuoi un Drawable lì. I limiti dei Drawable saranno impostati sui loro limiti intrinseci.


2

Per cambiare sinistra e destra entrambe contemporaneamente, utilizzo questa riga singola.

download.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_lock_open_white_24dp, 0, R.drawable.ic_lock_open_white_24dp, 0);

1

Puoi usare la tua vista editText (qui è txview) incorporata nella funzione setCompoundDrawablesWithIntrinsicBounds () per fare quello che stai cercando

nel mio codice l'ho usato così. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);

1
Dovresti spiegare il tuo codice per aiutare l'OP perché risponde alla sua domanda.
Markus

0
        et_feedback.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {

                }
              et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.feedback_new, 0, 0);                
               et_feedback.setTextColor(Color.BLACK);

            }
        });

Nascondi Drawable usando questo

et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);

0

Se richiede la grafica di Android disegnabile, allora funzionerà

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.