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 puede ver, configuré el DrawableLeft en xml.
Me gustaría cambiar el dibujo en el código.
¿Hay alguna forma de hacer esto? ¿O establecer el código drawableLeft en la vista de texto?
android
textview
android-drawable
coder_For_Life22
fuente
fuente
textview.getCompoundDrawablesRelative()[0]
conmContext.getResources().getDrawable(R.drawable.my_drawable)
Desde aquí veo que el método setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) se puede utilizar para hacer esto.
fuente
Puede usar cualquiera de los siguientes métodos para configurar Drawable en TextView:
1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)
2- setCompoundDrawables (Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)
Y para obtener recursos de recursos que puede utilizar:
fuente
Usando Kotlin:
Puede crear una función de extensión o simplemente usarla
setCompoundDrawablesWithIntrinsicBounds
directamente.Si necesita cambiar el tamaño del dibujo, puede usar esta función de extensión.
Para ser realmente elegante, cree un contenedor que permita la modificación de tamaño y / o color.
fuente
Una extensión de Kotlin + algo de relleno alrededor del dibujo
fuente
Hay dos formas de hacerlo: puede usar XML o Java para ello. Si es estático y no requiere cambios, puede inicializar en XML.
Ahora, si necesita cambiar los íconos dinámicamente, puede hacerlo llamando a los íconos en función de los eventos
fuente
fuente