Ich habe hier eine Textansicht in XML.
<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"/>
Wie Sie sehen können, habe ich DrawableLeft in XML gesetzt.
Ich möchte das Drawable im Code ändern.
Gibt es überhaupt etwas zu tun? Oder setzen Sie die drawableLeft im Code für die Textansicht?
android
textview
android-drawable
coder_For_Life22
quelle
quelle
textview.getCompoundDrawablesRelative()[0]
mitmContext.getResources().getDrawable(R.drawable.my_drawable)
Von hier aus sehe ich die Methode setCompoundDrawablesWithIntrinsicBounds (int, int, int, int), die dazu verwendet werden kann.
quelle
Sie können eine der folgenden Methoden verwenden, um das Drawable in TextView festzulegen:
1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)
2- setCompoundDrawables (Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)
Und um aus Ressourcen schöpfbar zu werden, können Sie Folgendes verwenden:
quelle
Kotlin verwenden:
Sie können eine Erweiterungsfunktion erstellen oder direkt verwenden
setCompoundDrawablesWithIntrinsicBounds
.Wenn Sie die Größe des Zeichens ändern müssen, können Sie diese Erweiterungsfunktion verwenden.
Erstellen Sie einen Wrapper, der Größen- und / oder Farbänderungen ermöglicht, um wirklich ausgefallen zu werden.
quelle
Eine Kotlin-Erweiterung + etwas Polsterung um das Drawable
quelle
Es gibt zwei Möglichkeiten, entweder XML oder Java zu verwenden. Wenn es statisch ist und keine Änderungen erfordert, können Sie es in XML initialisieren.
Wenn Sie nun die Symbole dynamisch ändern müssen, können Sie dies tun, indem Sie die Symbole basierend auf den Ereignissen aufrufen
quelle
quelle