¿Cómo configurar drawableRight mediante programación en Android Edittext?


85

Sé acerca de set drawableRight en XML. pero necesitaba hacerlo programáticamente porque se cambia según alguna condición.


9
Utilice setCompoundDrawablesWithIntrinsicBounds () para EditText.
Piyush

Respuestas:


258

Puede utilizar la siguiente función:

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

o (si desea pasar el dibujable en lugar de su ID)

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

El orden de los parámetros correspondientes a la ubicación dibujable es: izquierda, arriba, derecha, abajo


1
¿Cómo puedo asignar una identificación a ese dibujo? Básicamente, quiero agregar un oyente táctil a ese dibujante específico
Thorvald Olavsen

@Lawrence Choy hola señor, cómo comprobar que la imagen ya está saliendo o no. Por favor, ayúdeme en este caso, y cómo cambiar el color de la imagen.
Gowthaman M

8

Encuentra más aquí

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

También puede establecer el relleno dibujable mediante programación:

myEdit.setCompoundDrawablePadding("Padding value");

hola señor, cómo verificar la imagen ya está saliendo o no. Por favor ayúdeme en este caso, y cómo cambiar el color de la imagen
Gowthaman M

4

Prueba como a continuación:

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

Editar:

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

4

Tratar:

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

Luego, puede agregar un oyente táctil a ese dibujable específico.


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

Explicado aquí

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

Establece los elementos de diseño (si los hay) para que aparezcan a la izquierda, arriba, a la derecha y debajo del texto. Use 0 si no quiere un Drawable allí. Los límites de los Drawables se establecerán en sus límites intrínsecos.


2

Para cambiar de izquierda a derecha a la vez, utilizo esta única línea.

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

1

Puede usar su vista editText (aquí es txview) incorporada en la función setCompoundDrawablesWithIntrinsicBounds () para hacer lo que está buscando

en mi código lo usé así. txview.setCompoundDrawablesWithIntrinsicBounds (0,0, R.drawable.ic_arrow_drop_up, 0);

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

1
Debe explicar su código para ayudar al OP por qué responde a su pregunta.
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);

            }
        });

Ocultar dibujable usando esto

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

0

Si requiere gráficos de Android dibujables, esto funcionará

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.