Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Programáticamente establecido izquierda dibujable en un TextView

Tengo un textView en xml aquí.

<TextView android:id="@+id/bookTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:drawableLeft="@drawable/checkmark" android:gravity="center_vertical" android:textStyle="bold" android:textSize="24dip" android:maxLines="1" android:ellipsize="end"/> 

Como se puede ver, establezco DrawableLeft en xml.

Quisiera cambiar el drawable en código.

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

  • Evitar recursos duplicados en el proyecto android
  • Selector con android: drawable = atributo "@ color / transparent"
  • No se puede usar android: icon = "@ mipmap / ic_launcher" en Manifest after play services 7.5.0
  • Creación de un acceso directo: ¿cómo puedo trabajar con un dibujable como Icono?
  • Cómo cambiar el color de burbuja de EditText (bajo el cursor) en android?
  • Selector de fondo de botones
  • Carga dibujable desde la tarjeta sd
  • Cambio de color en una forma dentro de una lista de capas mediante programación
  • 4 Solutions collect form web for “Programáticamente establecido izquierda dibujable en un TextView”

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

    Establecer 0 donde no desea imágenes

    Ejemplo para Drawable a la izquierda:

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

    Sugerencia: Siempre que conozca algún atributo XML, pero no tiene idea de cómo utilizarlo en tiempo de ejecución. Sólo tienes que ir a la descripción de la propiedad en el desarrollador doc. Allí encontrará los métodos relacionados si es soportado en tiempo de ejecución. Es decir Para DrawableLeft

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

    Puede utilizar cualquiera de los métodos siguientes para establecer el Drawable en TextView:

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

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

    Y para obtener dibujable de los recursos que puede utilizar:

     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; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.