J'ai un textView en xml ici.
<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"/>
Comme vous pouvez le voir, j'ai défini le DrawableLeft en xml.
Je voudrais changer le drawable dans le code.
Y a-t-il une façon de procéder? Ou définir le drawableLeft dans le code pour la vue texte?
android
textview
android-drawable
coder_For_Life22
la source
la source
textview.getCompoundDrawablesRelative()[0]
avecmContext.getResources().getDrawable(R.drawable.my_drawable)
De là, je vois que la méthode setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) peut être utilisée pour ce faire.
la source
Vous pouvez utiliser l'une des méthodes suivantes pour définir le Drawable sur TextView:
1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)
2- setCompoundDrawables (Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)
Et pour tirer parti des ressources, vous pouvez utiliser:
la source
Utilisation de Kotlin:
Vous pouvez créer une fonction d'extension ou simplement utiliser
setCompoundDrawablesWithIntrinsicBounds
directement.Si vous devez redimensionner le dessinable, vous pouvez utiliser cette fonction d'extension.
Pour obtenir vraiment de la fantaisie, créez un emballage qui permet la modification de la taille et / ou de la couleur.
la source
Une extension Kotlin + un rembourrage autour du tirable
la source
il y a deux façons de le faire, vous pouvez utiliser XML ou Java pour cela. S'il est statique et ne nécessite aucune modification, vous pouvez l'initialiser en XML.
Maintenant, si vous devez changer les icônes dynamiquement, vous pouvez le faire en appelant les icônes en fonction des événements
la source
la source