web-dev-qa-db-fra.com

LinearLayout vs RelativeLayout

Quels sont les avantages de RelativeLayout par rapport à LinearLayout dans Android? Pour une conception particulière que préféreriez-vous et quelle est la raison derrière cela ???

Est-ce (RelativeLayout) comparable ou similaire comme HTML <div> ??

71
Soumyadip Das

Lire cet article :

Le toolkit Android UI) offre plusieurs gestionnaires de mise en page plutôt simples à utiliser. La plupart du temps, vous avez uniquement besoin des fonctionnalités de base de ces gestionnaires de mise en page pour implémenter une interface utilisateur. Malheureusement, les fonctionnalités ne constituent pas le moyen le plus efficace de créer des interfaces utilisateur. Un exemple courant est l’abus de LinearLayout , qui entraîne une prolifération de vues dans la hiérarchie des vues. Chaque vue, ou pire encore, tout gestionnaire de mise en page, vous ajoutez à votre application a un coût: initialisation, mise en page et dessin deviennent plus lents. La passe de mise en page peut être particulièrement coûteuse lorsque vous imbriquez plusieurs LinearLayout qui utilisent le paramètre weight , qui nécessite que l'enfant soit mesuré. deux fois...

Dans un RelativeLayout, les vues sont alignées sur leur parent, sur le RelativeLayout lui-même ou sur d'autres vues. Par exemple, nous avons déclaré que la description est alignée sur le bas de RelativeLayout et que le titre est positionné au-dessus de la description et ancré au sommet du parent. Avec la description GONE, RelativeLayout ne sait pas où positionner le bord inférieur du titre. Pour résoudre ce problème, vous pouvez utiliser un paramètre de présentation très spécial appelé alignWithParentIfMissing .

Ce paramètre booléen indique simplement à RelativeLayout d'utiliser ses propres bords comme ancres lorsqu'une cible de contrainte est manquante. Par exemple, si vous positionnez une vue à droite d'une vue GONE et définissez alignWithParentIfMissing sur true, RelativeLayout ancre la vue à son bord gauche. Dans notre cas, utiliser alignWithParentIfMissing fera que RelativeLayout aligne le bas du titre sur son propre bas.

... la différence sera beaucoup plus importante si vous utilisez une telle disposition pour chaque élément d'un ListView, par exemple ...

46
BlackHatSamurai

Par son nom, vous pouvez connaître LinearLayout ajoute la vue de manière linéaire, verticale ou horizontale, selon l’orientation que vous avez définie. Il ajoutera des vues les unes après les autres, en fonction des exigences de la conception. Et RelativeLayout ajoute une vue en relation, il n'est pas nécessaire de déclarer l'orientation dans RelativeLayout.

Comme par exemple, vous voulez ajouter deux TextViews sous un autre, vous allez donc ajouter le premier TextView et référencer le second TextView avec le premier TextView en ajoutant Android:layout_below="first textview's id" dans le fichier XML. De cette façon, vous pouvez gérer RelativeLayout.

16
AkashG