android layout: This tag and its children can be replaced by one <TextView/> and a compound drawable
Solution 1:
To expand on Romain Guy's answer, here is an example.
Before:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="5dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="My Compound Button" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_drawable" />
</LinearLayout>
After:
<TextView
android:layout_marginTop="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My Compound Button"
android:drawableRight="@drawable/my_drawable" android:padding="5dp" />
Solution 2:
Merge the TextView
and the ImageView
into one, by using TextView's setCompoundDrawable*()
methods, or using android:drawableLeft
.
Solution 3:
Thought I would try to get some extra puntos for this as well: you can add padding between the image and the text using android:drawablePadding
. https://stackoverflow.com/a/6671544/1224741
Solution 4:
Sometimes it is possible to replace ImageView
(or multiple) and TextView
with one TextView
with compound drawable(s). There are NOT many parameters which can be applied to compound drawable using native API and this TextViewRichDrawable library, but if you can manage one TextView instead of using LinearLayout you should definitely use it.
The list of attributes and parameters which can be applied to compound drawables:
Size: (YES, really):
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text"
app:compoundDrawableHeight="24dp"
app:compoundDrawableWidth="24dp"/>
Even set vector resource as drawable:
<com.tolstykh.textviewrichdrawable.TextViewRichDrawable
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text"
app:drawableTopVector="@drawable/some_vector_drawble"
app:drawableEndVector="@drawable/another_vector_drawable" />
Drawable's Padding using native API android:drawablePadding
-> link
Here is an example:
Solution 5:
Add tools:ignore="UseCompoundDrawables"
to <LinearLayout>
.