Establecer programáticamente left drawable en un TextView

Tengo un textView en xml aquí.

 

Como puede ver, configuro DrawableLeft en xml.

Me gustaría cambiar el dibujable en el código.

¿Hay alguna forma de hacer esto? ¿O configurar el drawableLeft en el código para la vista de texto?

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

establece 0 donde no quieres imágenes

Ejemplo para Drawable a la izquierda:

 TextView textView = (TextView) findViewById(R.id.myTxtView); textView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0); 

Consejo: Siempre que conozca algún atributo XML pero no tenga idea de cómo usarlo en tiempo de ejecución. solo vaya a la descripción de esa propiedad en el documento del desarrollador. Allí encontrará métodos relacionados si es compatible en tiempo de ejecución. es decir, para DrawableLeft

Desde aquí veo el método setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) se puede usar para hacer esto.

Puede usar cualquiera de los siguientes métodos para configurar el Drawable en TextView:

1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)

2- setCompoundDrawables (Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)

Y para obtener recursos dibujables, puede usar:

 getResources().getDrawable(R.drawable.your_drawable_id); 
 static private Drawable **scaleDrawable**(Drawable drawable, int width, int height) { int wi = drawable.getIntrinsicWidth(); int hi = drawable.getIntrinsicHeight(); int dimDiff = Math.abs(wi - width) - Math.abs(hi - height); float scale = (dimDiff > 0) ? width / (float)wi : height / (float)hi; Rect bounds = new Rect(0, 0, (int)(scale * wi), (int)(scale * hi)); drawable.setBounds(bounds); return drawable; }