Démonstration de la marge négative :
Le scénario
Chevauchement de vues en définissant une marge négative à l'une d'entre elles de manière à ce qu'elle envahisse la boîte englobante d'une autre vue.
Pensées
Cela semble fonctionner comme prévu, avec un chevauchement des mises en page si nécessaire. Mais je ne veux pas me heurter à un problème plus important en ne faisant pas les choses correctement sans le savoir. Emulateurs, périphériques physiques, etc., lorsque vous utilisez des marges négatives, tout semble fonctionner correctement, une vue envahit la boîte de délimitation d'une autre vue et, selon la façon dont elle est déclarée dans la mise en page, elle sera au-dessus ou au-dessous de l'autre vue.
Je suis également conscient que depuis l'API 21, nous pouvons définir l'option translationZ
y elevation
attributs pour faire apparaître la vue au-dessus ou au-dessous des autres vues mais ma préoccupation vient essentiellement du fait que dans la documentation pour le layout_margin
attributs il est clairement spécifié que les valeurs de marge doivent être positives Laissez-moi vous citer :
Extrait :
Spécifie un espace supplémentaire sur les côtés gauche, supérieur, droit et inférieur de cette vue. Cet espace est en dehors des limites de cette vue. Les valeurs des marges doivent être positives . Doit être une valeur de dimension, qui est un nombre à virgule flottante auquel est ajoutée une unité telle que "14.5sp". Les unités disponibles sont : px (pixels), dp (pixels indépendants de la densité), sp (pixels mis à l'échelle en fonction de la taille de police préférée), in (pouces), mm (millimètres)...
Depuis que j'ai posé cette question, je n'ai eu aucun problème avec les marges négatives, j'ai essayé d'éviter de les utiliser autant que possible, mais j'ai pas Je n'ai rencontré aucun problème, donc même si la documentation l'indique, je ne suis pas trop inquiet à ce sujet.
2 votes
Je sais que les tests espresso ne seront pas capables de voir l'objet si l'une de ses marges est négative... c'est donc une raison pour ne pas les utiliser.