wake-up-neo.com

In einer Textansicht programmgesteuert als links zeichnend festlegen

Ich habe eine Textansicht in XML hier.

<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 die Zeichenfläche im Code ändern.

Gibt es überhaupt etwas zu tun? Oder das drawableLeft im Code für die Textansicht setzen?

253

Sie können setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom verwenden

stellen Sie 0 ein, wenn Sie keine Bilder möchten

Beispiel für Drawable links:

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

Tipp: Wenn Sie ein XML-Attribut kennen, aber keine Ahnung haben, wie es zur Laufzeit verwendet wird. Gehen Sie einfach zur Beschreibung dieser Eigenschaft in der Entwicklerdokumentation. Dort finden Sie Verwandte Methoden , wenn diese zur Laufzeit unterstützt werden. d.h. für DrawableLeft

715
BrainCrash

Von hier sehe ich die Methode setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) kann dazu verwendet werden.

15
Jack

Sie können eine der folgenden Methoden verwenden, um Drawable in TextView festzulegen:

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

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

Und um von Ressourcen zu profitieren, können Sie Folgendes verwenden:

getResources().getDrawable(R.drawable.your_drawable_id);
5
Shajeel Afzal

Eine Kotlin-Erweiterung + etwas Polsterung um den Drawable

fun TextView.addDrawable(drawable: Int) {
val imgDrawable = ContextCompat.getDrawable(context, drawable)
compoundDrawablePadding = 32
setCompoundDrawablesWithIntrinsicBounds(imgDrawable, null, null, null)
}
0
r3dm4n