160 votes

Comment puis-je spécifier des mises en page différentes pour les orientations portrait et paysage ?

J'ai vu des références à la possibilité de spécifier deux fichiers xml de mise en page distincts pour une activité, un pour le mode portrait et un pour le mode paysage. Je n'ai pas trouvé d'informations sur la façon de le faire. Comment puis-je spécifier pour chaque activité quel fichier xml est sa mise en page portrait et quel fichier est sa mise en page paysage ?

Est-il également possible de spécifier des mises en page différentes pour des tailles d'écran différentes ? Dans l'affirmative, comment cela se fait-il ?

220voto

mbaird Points 31293

Créer un layout-land et placez la version paysage de votre fichier XML de mise en page dans ce répertoire.

5 votes

Cela signifie-t-il que toutes les activités doivent définir à la fois une vue paysage et une vue portrait si je fais cela ?

21 votes

Non, si aucune définition de zone de mise en page n'existe, il utilise simplement la mise en page XML dans le répertoire de mise en page standard.

0 votes

Dans mon cas, layout-land ne fonctionne pas lorsque j'utilise Android:configChanges="orientation|keyboardHidden|screenSize".

64voto

Silvio Donnini Points 1526

Il suffit de les placer dans des dossiers distincts portant des noms différents en fonction de l'orientation et de la résolution. L'appareil sélectionnera automatiquement le dossier correspondant aux paramètres de son écran.

Plus d'informations ici :

http://developer.Android.com/guide/practices/screens_support.html

sous "Qualifications du répertoire de ressources pour la taille et la densité de l'écran".

0 votes

Ne fonctionne que pour les versions OS 1.6 ou plus. Si vous voulez supporter la version 1.5, vous avez besoin de ce lien : developer.Android.com/guide/practices/screens-support-1.5.html

2 votes

@Silvio Donnini - les liens ne contiennent plus les informations requises.

2 votes

@itsaboutcode Oui, c'est le cas : Descendez à "Utiliser les qualificatifs de configuration".

30voto

AmiNadimi Points 1522

Pour les amoureux de la souris ! Je dis : clic droit sur le dossier des ressources et Add new resource file et, parmi les qualificatifs disponibles, sélectionnez le orientation :

enter image description here


Mais vous pouvez toujours le faire manuellement en ajoutant, par exemple, le sous-dossier "layout-land" à

"Répertoire de votre projet \app\src\main\res "

depuis lors, tout fichier layout.xml dans ce sous-dossier ne fonctionnera qu'en mode paysage. automatiquement .

Utilisez "layout-port" pour le mode portrait.

1 votes

Cela a marché pour moi. J'ai ajouté un nouveau fichier de mise en page, comme indiqué, avec le même nom que la version portrait. Android Studio a automatiquement créé un dossier pour cette mise en page. Une mise en page pour le portrait et une autre pour le paysage. La nouvelle mise en page s'affiche automatiquement lors de la rotation de l'écran.

25voto

Shid Points 32

Méthode la plus rapide pour Android Studio 3.x.x et Android Studio 4.x.x

Allez dans l'onglet Conception de la mise en page de l'activité.

En haut, vous devez appuyer sur le bouton d'orientation pour l'aperçu, il y a une option pour créer une mise en page de paysage (vérifier l'image), un nouveau dossier sera créé comme votre fichier de mise en page xml pour cette orientation particulière.

enter image description here

0 votes

L'un des moyens les plus simples et les plus courts de traiter l'aménagement paysager.

0 votes

Cette réponse devrait être choisie

1 votes

Sur les nouvelles versions d'AndroidStudio, cette option a été déplacée dans le menu contextuel du bouton "Nom de fichier .xml".

22voto

Robin Qiu Points 156

Juste un rappel :

Retirer orientation de android:configChanges pour l'activité dans votre manifeste xml si vous l'avez défini :

android:configChanges="orientation|screenLayout|screenSize"

2 votes

Que faire si j'ai besoin d'avoir Android:configChanges="orientation|screenLayout|screenSize" dans mon manifeste, car certains de mes fragments peuvent être dans les deux orientations et d'autres non, mais que j'ai quand même besoin de dispositions séparées pour le paysage et le portrait pour les fragments qui peuvent changer d'orientation dynamiquement ?

0 votes

Si je supprime l'orientation dans Android:configChanges, l'activité est détruite lorsque l'orientation change.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X