2012-10-07 18 views
25

Tengo el siguiente TextView:Restringir drawableLeft y la altura de drawableRight a la altura de Vista de Texto

<TextView 
    android:drawableLeft="@drawable/loading" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Updating Rates" /> 

Y el resultado es este:

¿Cómo hago la restricción dibujable carga círculo proporcional, de manera su altura coincide con la altura del texto?

Además, si es posible, me gustaría agregar algo de espacio entre el texto y la imagen.

Respuesta

22

Para hacer el loading más pequeño apenas hacer las imágenes más pequeñas.

O use RelativeLayout y coloque la carga en un ImageView y escalela.

O puede agregar relleno entre las dibujables y el texto usando android:drawablePadding (o setCompoundDrawablePadding()):

solución
android:drawablePadding="3dp" 
+0

"Para hacer las imágenes más pequeñas" - Ayúdame. Gracias. – offset

+0

@offset cambiar el tamaño de las imágenes (Photoshop, GIMP, herramientas en línea, ... etc) – JafarKhQ

+1

Eso es lo que dije, reduje la imagen y resolvió mi problema. – offset

0

sólo tiene que declarar dos imageview puntos de vista independiente y TextView, y las puso en consecuencia

+1

Sí, pero a veces se puede dibujarDebido se necesita dentro de TextView para oyentes de clic (como un icono de selector de calendario). Entonces establecerlos por separado será un problema. –

+0

Póngalos en LinearLayout y configure el clic en el Diseño. ¡Problema resuelto! – noob

0

Una mejor será para crear un XML en la carpeta estirable y añadir la imagen a este XML, y mantener scaleType como "fitXY". Ahora puede hacer que este XML sea DrawableLeft.

+1

¿Puede agregar más detalles? Tal vez un ejemplo de archivo XML? –

+1

Intenté esto y no funciona. No puede establecer el tamaño de a través de XML en la carpeta dibujable. El scaleType = "fitXY" se aplica a ImageViews no dibujables. Fui escalando las imágenes y colocándolas en las diferentes carpetas drawable-mdpi, drawable-xhdpi. – Deemoe

7

Creo que he encontrado la solución, pero un poco tarde solución

Drawable drawable = getResources().getDrawable(R.drawable.s_vit); 
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5),(int)(drawable.getIntrinsicHeight()*0.5)); 
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight); 
Button btn = findViewbyId(R.id.yourbtnID); 
btn.setCompoundDrawables(sd.getDrawable(), null, null, null); 
+0

¿Qué es scaleWidth y scaleHeight en ese código? – Sly

1

de Ravi trabajó para mí, pero en algunos dispositivos dibujable estaba desapareciendo. Se solucionó esto eliminando la escala.

int bound = (int) (drawable.getIntrinsicWidth() * 0.5); 
    drawable.setBounds(0, 0, bound, bound); 
    b.setCompoundDrawables(drawable, null, null, null); 
Cuestiones relacionadas