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




uso java (5)

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

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?


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.


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)


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

He implementado esto usando la vista web. En mi caso, tengo que cargar la imagen desde la URL junto con el texto en la vista de texto y esto funciona para mí.

WebView myWebView =new WebView(_context);
        String html = childText;
        String mime = "text/html";
        String encoding = "utf-8";
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.loadDataWithBaseURL(null, html, mime, encoding, null);




android android-layout android-linearlayout android-textview compound-drawables