Comprender la de Android

No entiendo cómo funcionan las listas de capa. Leí la documentación oficial con algunos ejemplos, pero no funciona para mí como se esperaba. Quiero cuatro cuadrados que deben rellenarse con 1dp, pero nada es como se esperaba. Aquí hay una captura de pantalla escalada en un 500%:

Mis suares
(Los colores incorrectos no importan)
Como puede ver, el tamaño es completamente incorrecto y faltan las almohadillas. Traté de establecer valores reales como ancho / alto y derecha / izquierda / arriba / abajo para asegurarme de que Android obtenga el punto que yo quiero.

Aquí está mi xml:

                                 

Los valores para izquierda, arriba, derecha e inferior se miden desde su borde respectivo.

Entonces left = 0dp, top = 0dp, bottom = 0dp y right = 50dp le dará un rectángulo que es (match_parent – 50dp) de ancho y no de ancho de 50dp. Por lo tanto, los valores más grandes para “derecha” en realidad le darán un rectángulo más pequeño.

Lo mismo se aplicaría al otro valor, pero estos se comportarían como se espera en la mayoría de los casos, es simplemente “correcto” que podría causar confusión.

O utiliza px lugar de dp o multiplica todas las dimensiones por 10 .

Me da vergüenza admitir que no sé exactamente por qué sucede esto, pero creo que tiene algo que ver con las densidades donde 1dp es un valor de px flotante y el ImageView se amplía.

Respuesta experta es bienvenida 🙂