Comprendre la <couche-list> de l'Android

Je ne comprends pas comment fonctionnent les listes de couches. J'ai lu la documentation officielle avec quelques exemples, mais ça ne fonctionne pas pour moi comme prévu. Je veux quatre carrés qui devraient être rembourrés avec 1dp, mais rien n'est comme prévu. Voici une capture d'écran mise à l'échelle de 500%:

Mes suares
(Les mauvaises couleurs n'ont pas d'importance)
Comme vous pouvez le constater, la taille est complètement erronée et les rembourrages sont manquants. J'ai essayé de définir des valeurs réelles comme la largeur / hauteur et droite / gauche / supérieure / buttom pour être sûr que Android obtenir le point de ce que je veux.

  • Changer la couleur de la coche ColorAccent dans l'exécution programmatically
  • Générer listview depuis JSON dans Android
  • Android: Alternative pour context.getDrawable ()
  • Android EditText trace une ligne de diviseur entre son dessinable et son texte
  • Est-il possible de créer des tirages de taille fixe dans Android API pré-23?
  • Utilisation de ressources desserrées
  • Voici mon 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> 

    2 Solutions collect form web for “Comprendre la <couche-list> de l'Android”

    Les valeurs de gauche, de haut, de droite et de bas sont mesurées à partir de leur bord respectif.

    Donc left = 0dp, top = 0dp, bottom = 0dp & right = 50dp vous donnera un rectangle qui est (match_parent – 50dp) de largeur et ne dépasse pas 50dp. Par conséquent, des valeurs plus importantes pour "droite" vous donneront un rectangle plus petit.

    Il en va de même pour l'autre valeur, mais ceux-ci se comportent comme prévu dans la plupart des cas, c'est juste «juste» qui pourrait causer de la confusion.

    Soit vous utilisez px au lieu de dp soit multipliez toutes les dimensions par 10 .

    J'ai honte d'admettre que je ne sais pas exactement pourquoi cela se produit, mais je suppose que cela a quelque chose à voir avec les densités où 1dp est une valeur px flottante et l' ImageView est étendu.

    La réponse d'expert est bienvenue 🙂

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.