uso una studio resource recursos raw carpeta archivo aplicación android android-layout android-linearlayout android-textview compound-drawables

android - una - ¿Cómo utilizo un drawable compuesto en lugar de un LinearLayout que contiene un ImageView y un TextView



string value android (4)

Para agregar a esto, parece importante definir el ancho y la altura del dibujable según esta publicación:

  • La forma extraíble no se muestra cuando se usa en combinación con el atributo android: drawableBottom.

(su código funciona)

Corrí la nueva herramienta de Lint contra mi código. Surgió con muchas buenas sugerencias, pero esta no puedo entender.

Esta etiqueta y sus hijos pueden reemplazarse por uno y un compuesto dibujable

Problema: comprueba si el nodo actual puede reemplazarse por un TextView utilizando compuestos compuestos.

Un LinearLayout que contiene un ImageView y un TextView puede manejarse más eficientemente como un compuesto dibujable

Y aquí está mi diseño

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

¿Puede alguien proporcionar un ejemplo concreto de cómo hacer un compuesto dibujable en este caso?


Puede utilizar la implementación dibujable general, pero si necesita definir un tamaño de dibujable use esta biblioteca:

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

Aquí hay un pequeño ejemplo de uso:

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


Si por alguna razón necesita agregar un código, puede usar esto:

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

donde izquierda, arriba, abajo derecha son Drawables


TextView viene con 4 compuestos arrastrables, uno para cada lado izquierdo, superior, derecho e inferior.

En su caso, no necesita LinearLayout e ImageView en absoluto. Simplemente agregue android:drawableLeft="@drawable/up_count_big" a su TextView .

Consulte TextView#setCompoundDrawablesWithIntrinsicBounds para obtener más información.