web-dev-qa-db-de.com

Wie verwende ich eine zusammengesetzte Zeichenfläche anstelle eines linearen Layouts, das eine ImageView und eine TextView enthält?

Lief das neue Lint-Tool gegen meinen Code. Es gab viele gute Vorschläge, aber diesen kann ich nicht verstehen.

Dieses Tag und seine untergeordneten Elemente können durch ein und ein zusammengesetztes Zeichenelement ersetzt werden

Problem: Überprüft, ob der aktuelle Knoten durch eine Textansicht mit zusammengesetzten Zeichensätzen ersetzt werden kann.

Ein LinearLayout, das eine ImageView und eine TextView enthält, kann effizienter als zusammengesetzte Zeichenfunktion behandelt werden

Und hier ist mein Layout

<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
Android:layout_centerInParent="true">

<ImageView 
    Android:id="@+id/upImage"
    Android:layout_width="20dp"
    Android:layout_height="20dp"
    Android:layout_gravity="center_vertical"
    Android:scaleType="centerInside"
    Android:src="@drawable/up_count_big">
</ImageView>

<TextView
    Android:id="@+id/LikeCount"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_marginLeft="2dp"
    Android:layout_marginBottom="1dp"
    Android:textColor="@color/gray"
    Android:textSize="16sp"
    Android:layout_gravity="center_vertical">
</TextView>
</LinearLayout>

Kann jemand ein konkretes Beispiel dafür liefern, wie eine Verbindung in diesem Fall zeichnbar gemacht werden kann?

186
Leo

TextView wird mit 4 zusammengesetzten Drawables geliefert, jeweils eines für links, oben, rechts und unten.

In Ihrem Fall brauchen Sie LinearLayout und ImageView überhaupt nicht. Einfach hinzufügen Android:drawableLeft="@drawable/up_count_big" zu Ihrem TextView.

Siehe TextView # setCompoundDrawablesWithIntrinsicBounds für weitere Informationen.

248
chiuki

wenn Sie aus irgendeinem Grund einen Code hinzufügen müssen, können Sie diesen verwenden:

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

wo links, oben, rechts unten sind Drawables

20
Javier P

Um dies hinzuzufügen, scheint es wichtig zu sein, die Breite und Höhe des Zeichnungsobjekts wie in diesem Beitrag zu definieren:

(sein Code funktioniert)

3

Sie können die allgemeine Implementierung für zusammengesetzte Zeichen verwenden. Wenn Sie jedoch eine Zeichengröße definieren müssen, verwenden Sie diese Bibliothek:

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

Hier ist ein kleines Anwendungsbeispiel:

<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Some text"
        app:compoundDrawableHeight="24dp"
        app:compoundDrawableWidth="24dp" />
1
Oleksandr