63 votos

Es una mala práctica para el uso de márgenes negativos en Android?

Parece funcionar de la manera que usted esperaría con la superposición de los diseños que choquen. Pero no quiero que se ejecute en un problema más grande para no hacer las cosas bien desde el principio en este proyecto.

El escenario es simple, una fila base LinearLayout que tiene un número n de filas y quiero algunas de las filas que se superponen o invadir si lo desea, el cuadro delimitador de la fila anterior. Como ya he dicho, esto funciona en el emulador y hasta ahora no he encontrado ninguna razón para no usarlo, pero me gustaría saber si alguno de ustedes han tenido problemas con este tipo de práctica.

102voto

CommonsWare Puntos 402670

En 2010, @RomainGuy (core Android ingeniero) declaró que los márgenes negativos tenido comportamientos no especificados.

En 2011, @RomainGuy dijo que usted puede utilizar márgenes negativos en LinearLayout y RelativeLayout.

En mi humilde opinión, la última en gana, así que me gustaría ir con el último Romain-ly asesoramiento. :-)

3voto

LackeySoft Puntos 41

Para mí, y sobre la configuración de un margen negativo en un TextView (me doy cuenta de que el OP se refiere a un ViewGroup, pero yo estaba buscando problemas con la configuración de márgenes negativos y aterricé aquí)... he encontrado un problema con el 4.0.3 (API 15) y el valor de android:layout_marginTop o android:layout_marginBottom a un valor negativo como-2dp.

Por alguna razón el TextView no muestra en absoluto. Parece ser "desaparecido" desde el punto de vista (no sólo invisible).

Cuando he intentado esto con las otras 3 versiones de layout_margin, no veo el problema.

Tenga en cuenta que no he probado esto en un dispositivo real, esto es el uso de un 4.0.3 emulador. Esta es la 2da cosa extraña que he encontrado que sólo afectó a 4.0.3, así que mi nueva regla es siempre la prueba con un 4.0.3 emulador :)

Tengo éxito con la reducción en el margen inferior de un TextView mediante android:lineSpacingExtra="-2dp" que funciona incluso aunque se me ocurre para tener android:singleLine="true" (y así no me habría imaginado que interlineado sería un factor).

1voto

FoamyGuy Puntos 26600

Sólo he sabido que era posible para un periodo de tiempo bastante corto. Pero no veo ningún problema con ello. Acaba de ser conscientes de tamaños de pantalla y tal así que usted está seguro de no poner accidentalmente a los elementos que no aparecen superpuestas en la pantalla. (es decir, el texto en la parte superior del texto es probablemente una mala idea.)

1voto

Ali Puntos 1597

En caso de que desee utilizar margen negativo,establecer el relleno suficiente como para contenedor y su clipToPadding a false y establezca margen negativo para sus hijos, así que no clip de el niño!

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X