web-dev-qa-db-fra.com

FrameLayout vs RelativeLayout pour les superpositions

J'ai besoin d'implémenter un écran de superposition (translucide) pour mon application, quelque chose de similaire à Showcase View

Ma supposition était d'utiliser FrameLayout pour ce cas d'utilisation, car il est utilisé pour empiler des éléments les uns sur les autres. Mais j'ai été surpris de voir que la bibliothèque ci-dessus utilise RelativeLayout.

Ma question est de savoir quand utiliser FrameLayout alors, sinon dans des cas comme celui-ci? Quels sont les inconvénients si je choisis FrameLayout?

58
Jaguar

Une règle générale courante lors du choix des mises en page consiste à sélectionner la combinaison qui génère le plus petit nombre de vues de mise en page imbriquées.

Spécifique à votre question, RelativeLayout est plus grand et plus performant que FrameLayout beaucoup plus simple. Donc, pour les mises en page simples, cette dernière est probablement plus efficace. Mais si l'utilisation de RelativeLayout et de ses options de positionnement ajoutées vous permet d'implémenter votre interface graphique dans un plus petit nombre de vues de mise en page, ce serait probablement un meilleur choix.

Voici une page qui discute de certains compromis et montre quelques outils utiles à utiliser lors de la conception de vos mises en page. Il parle principalement de RelativeLayout et LinearLayout, mais est également adapté à votre choix entre RelativeLayout et Framelayout. Gardez à l'esprit que FrameLayout est une mise en page encore plus simple.

Edit (2017): pour des mises en page encore plus compliquées, vous pouvez éviter les mises en page imbriquées en utilisant ConstraintLayout.

58
scottt