2012-09-17 9 views
17

Tengo un ListView poblado con un ArrayAdapter. Para los artículos, uso solo un diseño TextView. Quiero que algunas filas tengan conjuntos compuestos arrastrables.Establecer el relleno de texto real en TextView con compuestos dibujables

Pregunta: ¿hay alguna manera de establecer el relleno para el texto real que está contenido en TextView para que los compuestos extraíbles no obtengan el relleno también? Otra solución sería bloquear el ancho del texto. ¿Debo agregar ImageViews a mi diseño?

Gracias de antemano.

+0

Tengo curiosidad por esto también, ¿has encontrado una solución? –

+2

Nah. Acabo de agregar algunos 'ImageView's y esa fue mi solución. Incluso obtuve una insignia de "Tumbleweed" para esta pregunta, así que supongo que es imposible. – Gio

+1

Hah, gracioso. Veo una forma de poner relleno en la imagen, pero no relleno en el texto. –

Respuesta

8

Estoy publicando esto como una respuesta para que alguien, que se encuentra con esta publicación encuentre la respuesta.

No hay una manera directa de establecer un relleno solo para el texto, pero puede establecer un relleno positivo para todo el TextView y establecer un relleno negativo para el dibujable.

+0

Necesita editar la respuesta. Utilice los atributos 'drawPadding'. –

36

Muy sencillo

androide: drawablePadding = "5 dp"

Se utilizará automáticamente el relleno de acuerdo con la dirección

+0

Gracias por su respuesta. Ya resolví mi problema y no tengo la fuente para probar tu método. – Gio

+1

Esta debería ser la respuesta aceptada. – matiash

+5

Y solo como referencia, el método es 'setCompoundDrawablePadding' – Niklas

7

La mejora en la sugerencia de Gio, que es probablemente para una fecha API/SDK ...

TL: DR - solo aplique android:drawablePadding para aumentar la distancia entre la imagen y el texto.

Explicación: android:drawablePadding ahora se aplica relleno entre CompoundDrawable y original View, en este caso el TextView que contiene el texto;

android:padding y los modificadores se aplican ahora a todo el grupo, incluidos todos los compuestos.

Hacer el hack negativo-positivo ya no parece funcionar.

Por lo tanto, dependiendo de la posición dibujable (DrawableTop/Left/...), el relleno se aplicará en la dirección opuesta, justo al lado del dibujante, en otras palabras, entre los dos elementos. Por ejemplo, aplicar drawablePadding="10dp" a un dibujante colocado a la izquierda tendría un efecto similar a la configuración de un individuo ImageView a la izquierda de la Vista de texto con paddingRight="10dp" (al menos como relleno).

+1

Supongo que era para un SDK con fecha, también quería tener algún soporte heredado. En ese momento no podía pensar en una solución mejor de la que publiqué. – Gio

Cuestiones relacionadas