220 Stimmen

Wie verwende ich ein zusammengesetztes Drawable anstelle eines LinearLayouts, das ein ImageView und einen TextView enthält

Ich habe das neue Lint-Tool gegen meinen Code laufen lassen. Es hat viele gute Vorschläge gemacht, aber diesen hier verstehe ich nicht.

Dieses Tag und seine Kinder können durch ein ersetzt werden und ein zusammengesetztes Zeichen.

Problem: Überprüft, ob der aktuelle Knoten durch ein TextView unter Verwendung von zusammengesetzten Zeichen ersetzt werden kann.

Ein LinearLayout, das ein ImageView und ein TextView enthält, kann effizienter als ein zusammengesetztes Zeichen behandelt werden.

Und hier ist mein Layout

Kann jemand ein konkretes Beispiel dafür liefern, wie man in diesem Fall ein zusammengesetztes Zeichen erstellen kann?

287voto

chiuki Punkte 14202

TextView wird mit 4 zusammengesetzten Zeichnungen geliefert, eine für jede von links, oben, rechts und unten.

In Ihrem Fall benötigen Sie überhaupt nicht das LinearLayout und ImageView. Fügen Sie einfach android:drawableLeft="@drawable/up_count_big" zu Ihrem TextView hinzu.

Siehe TextView#setCompoundDrawablesWithIntrinsicBounds für weitere Informationen.

25voto

Javier P Punkte 1322

Wenn Sie aus irgendeinem Grund per Code hinzufügen müssen, können Sie dies verwenden:

mTextView.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

wo links, oben, rechts und unten Drawables sind

3voto

Richard Le Mesurier Punkte 28822

Um dies zu ergänzen - es scheint wichtig zu sein, die Breite und Höhe des Zeichnungsbereichs gemäß diesem Beitrag zu definieren:

(sein Code funktioniert)

1voto

Oleksandr Punkte 5866

Sie können die allgemeine Umsetzung von Zusammengesetzten Zeichnungen verwenden, aber wenn Sie die Größe der Zeichnung definieren müssen, verwenden Sie diese Bibliothek:

https://github.com/a-tolstykh/textview-rich-drawable

Hier ist ein kleines Anwendungsbeispiel:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X