Как использовать составной объект рисования вместо LinearLayout, который содержит ImageView и TextView - PullRequest
186 голосов
/ 30 ноября 2011

Запустил новый инструмент Lint для моего кода. В нем было много хороших предложений, но этого я не могу понять.

Этот тег и его дочерние элементы могут быть заменены на один и составной чертеж

Проблема: проверяет, можно ли заменить текущий узел на TextView, используя составные элементы рисования.

LinearLayout, который содержит ImageView и TextView, может быть более эффективно обработан как составной чертеж

А вот мой макет

<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>

Может ли кто-нибудь привести конкретный пример того, как сделать составной элемент в этом случае пригодным для рисования?

Ответы [ 4 ]

247 голосов
/ 30 ноября 2011

TextView поставляется с 4 составными чертежами, по одному для каждого из левого, верхнего, правого и нижнего.

В вашем случае вам вообще не нужны LinearLayout и ImageView.Просто добавьте android:drawableLeft="@drawable/up_count_big" к вашему TextView.

См. TextView # setCompoundDrawablesWithIntrinsicBounds для получения дополнительной информации.

19 голосов
/ 11 декабря 2013

если по какой-то причине вам нужно добавить через код, вы можете использовать это:

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

где слева, сверху, справа внизу - Drawables

3 голосов
/ 22 ноября 2012

Чтобы добавить к этому - кажется важным определить ширину и высоту отрисовки согласно этому сообщению:

(его код работает)

1 голос
/ 27 декабря 2016

Вы можете использовать общую составную реализацию для рисования, но если вам нужно определить размер рисуемой, используйте эту библиотеку:

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

Вот небольшой пример использования:

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