2011-03-23 11 views
64

Je ne suis pas sûr d'avoir bien compris le rôle joué par les différents /res/layout Android dossiers.dossiers de mise en page Android: mise en page, mise en page ports, mise en terre

layout: dispositions générales

layout-port: mise en page pour un widget qui doit changer l'orientation portrait

layout-land: mise en page pour un widget qui doit changer l'orientation paysage

Par exemple, dans l'exemple d'application Home, sous layout-port et layout-land dossiers il n'y a qu'un seul fichier home.xml.

Ai-je bien compris?

+6

Certains développeurs ne réalisent pas Comme il est important de maîtriser ce concept, merci d'avoir mis ça SO. – whyoz

+0

Ma théorie HTML5 va remplacer ce genre de choses dans le futur. – neferpitou

Répondre

106

Si vous êtes en mode paysage ou portrait Android recherche le fichier de mise en page soit dans le répertoire -port ou -land première, si elle est introuvable, il retombe dans le répertoire de mise en page par défaut.

Vous pouvez lire de fournir des ressources alternatives here. Il y a beaucoup plus d'options que juste la terre et le port.

+1

Dans ce cas, les autres dispositions ne changent pas en fonction de l'orientation de sorte qu'ils ne sont que dans le dossier de mise en page, alors que la maison est propre au portrait ou paysage – Cameron

+0

Je suis surpris qu'il n'y a pas une sorte de spécificateur d'orientation pour chaque propriété, à indiquer des valeurs différentes pour chacun. Je comprends que dans le cas de résolutions qui peuvent être désordonnées, mais comme il n'y a que deux orientations possibles (et qu'elles le seront toujours), il peut être intéressant de ne pas avoir à gérer deux fichiers séparés pour une mise en page si par exemple doit différer entre les orientations. – RTF

10

Si vous mettez home.xml dans le dossier layout-port, lorsque votre appareil est en orientation portrait, il utilisera le fichier: layout-port/home.xml.

Si vous mettez home.xml dans le dossier layout-land, lorsque votre appareil en orientation paysage utilisera le fichier: layout-land/home.xml.

Signification pour différents modes d'orientation comme portrait et paysage ... nous utilisons deux home.xml fichiers; un en layout-port et l'autre en layout-land. Si d'autre part vous voulez utiliser le même fichier de mise en page pour les deux, vous pouvez simplement mettre home.xml dans le dossier layout et le retirer de layout-land et layout-port.

+1

J'ai créé des fichiers XML pour la mise en page et la mise en page. Mais quand je change l'orientation en paysage, son fichier layout-land n'est pas affiché par l'androïde. Quel est le problème? – YuDroid

+7

Si vous avez deux fichiers de disposition dans -port et -land et qu'ils ne basculent pas lorsque vous changez l'orientation de l'appareil, vous avez probablement spécifié android: configChanges = "orientation" dans le fichier AndroidManifest.xml. Dans ce cas, spécifiez à nouveau setContentView() dans onConfigurationChanged() ou supprimez cette directive AndroidManifest.xml. –

3

Créer un dossier dans res layout-land ou layout-port

layout-port: mise en page pour un widget qui doit changer l'orientation portrait

layout-land: mise en page pour un widget qui doit changer l'orientation paysage