Entender la <lista de capas> de Android
No entiendo cómo funcionan las listas de capas. He leído la documentación oficial con algunos ejemplos, pero no funciona para mí como se esperaba. Quiero cuatro cuadrados que deben ser rellenados con 1dp, pero nada es como se esperaba. Aquí hay una captura de pantalla escalada en un 500%:
(Los colores equivocados no importan)
Como se puede ver el tamaño es completamente incorrecta y los rellenos están desaparecidos. Traté de establecer valores reales como width / height y right / left / top / buttom para estar seguro de que android obtener el punto lo que quiero.
- ¿Cómo hago un dibujable de varias imágenes?
- Problema de representación de Android Drawable (Barra de progreso, Interruptor)
- Error al inflar la clase <unknown>
- Mejor asignación de imágenes de calidad a partir de recursos basados en resolución / densidad
- Línea dibujable debajo de textview no mostrando
Aquí está mi xml:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp"> <shape android:shape="rectangle"> <size android:width="9dp" android:height="9dp"/> <solid android:color="#f000"/> </shape> </item> <item android:top="1dp" android:left="1dp" android:bottom="5dp" android:right="5dp"> <shape android:shape="rectangle"> <size android:width="3dp" android:height="3dp"/> <solid android:color="#f00"/> </shape> </item> <item android:top="1dp" android:left="5dp" android:bottom="5dp" android:right="1dp"> <shape android:shape="rectangle"> <size android:width="3dp" android:height="3dp"/> <solid android:color="#0f0"/> </shape> </item> <item android:top="5dp" android:left="1dp" android:bottom="1dp" android:right="5dp"> <shape android:shape="rectangle"> <size android:width="3dp" android:height="3dp"/> <solid android:color="#0f0"/> </shape> </item> <item android:top="5dp" android:left="5dp" android:bottom="1dp" android:right="1dp"> <shape android:shape="rectangle"> <size android:width="3dp" android:height="3dp"/> <solid android:color="#f00"/> </shape> </item> </layer-list>
- Barra de progreso circular Android con esquinas redondeadas
- Forma del androide con el movimiento inferior
- ¿Cómo usar una forma dibujable junto con una imagen?
- Cómo guardar, exportar o convertir un Android XML Drawable como un archivo de imagen PNG?
- Android: Cómo hacer un selector desplegable
- El botón de Android selecciona y presiona dibujable
- Cambiar el drawableLeft del botón cuando se hace clic en el botón
- Android: ¿cómo usar los colores del tema actual en un xml extraíble?
Los valores de izquierda, arriba, derecha e inferior se miden desde su borde respectivo.
Así que left = 0dp, top = 0dp, bottom = 0dp & right = 50dp le dará un rectángulo que es (match_parent – 50dp) de ancho y no 50dp de ancho. Por lo tanto los valores más grandes para "derecho" le darán realmente un rectángulo más pequeño.
Lo mismo se aplicaría al otro valor, pero estos se comportarían como se esperaba en la mayoría de los casos, su justo "derecho" que podría causar confusión.
Puedes usar px
lugar de dp
o multiplicar todas las dimensiones por 10
.
Tengo vergüenza de admitir que no sé exactamente por qué esto está sucediendo, pero mi conjetura es que tiene algo que ver con densidades donde 1dp
es un valor px
flotante y el ImageView
se amplía.
La respuesta del experto es bienvenida 🙂
- Mostrar mensaje "No Item" en ListView
- Cómo almacenar (imagen de mapa de bits) y recuperar la imagen de la base de datos sqlite en android?