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.