2013-02-12 3 views
2

J'ai une activité de menu dans laquelle j'ai plusieurs boutons positionnés. Il correspond parfaitement à l'écran de mon téléphone en mode portrait, mais en mode paysage, il est détruit. Je sais que lorsque j'ai le positionnement fixe ce sera le résultat. Quelqu'un peut-il me dire comment positionner mes boutons afin que mon activité conserve sa forme aussi en mode paysage? Je vous remercie.Android: Positionnement des boutons lors du passage du mode portrait au mode paysage

Voici mon fichier xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/bezpecnost_over" 
    android:layout_marginLeft="30dp" 
    android:layout_marginTop="50dp" 


     /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/kurenie_over" 
    android:layout_marginLeft="200dp" 
    android:layout_marginTop="50dp" 

    /> 

    <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/osvetlenie_over" 
    android:layout_marginLeft="200dp" 
    android:layout_marginTop="200dp" 
    android:onClick="obrOsv" /> 


<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:background="@drawable/pohodlie_over" 
    android:layout_marginLeft="30dp" 
    android:layout_marginTop="200dp" 
    /> 

</RelativeLayout> 

Répondre

3

Il correspond à l'écran de mon téléphone parfaitement en mode portrait, mais en mode paysage, il est détruit.

Ceci est prévu pour les mises en page relatives. Qu'est-ce que les développeurs font habituellement dans ce scénario:

  • Faire un dossier sous res appelé layout-land
  • Faire une xml avec le même nom que la mise en page en mode portrait (contenu dans res/layout)
  • Position pour le paysage mode.

Depuis le nom du fichier xml est le même, quand il est temps de l'activité pour définir l'affichage du contenu

setContentView (R.layout.my_layout); 

Le fichier my_layout.xml du dossier layout-land sera utilisé à la place.

Lire aussi Layouts & Supporting Multiple Screens des docs Android, ils ont tous deux des informations utiles à ce dernier de parler des différents qualificatifs (tels que layout-land).

+1

C'est comme ça qu'on m'a appris à le faire aussi. sauf si vous voulez changer leur position en fonction de la taille de l'écran? Ne pensez pas que cela fonctionnerait bien ou serait trop de travail pour la même solution. –

+0

Alors, que suggérez-vous? –

+0

@MartinNemeth [this] (http://developer.android.com/training/multiscreen/screensizes.html) lien devrait aller un peu plus en profondeur sur la façon de prendre en charge plusieurs tailles * d'écran *. Il parle d'utiliser match_parent à votre avantage ainsi que d'utiliser les qualificatifs. Cependant, gardez à l'esprit que plus votre mise en page est simple, plus il est facile de s'adapter à plusieurs écrans. –

0

Vous utilisez donc une disposition relative pour espacer les boutons horizontalement en utilisant des montants de marge croissants? C'est totalement ne pas comprendre comment fonctionnent les mises en page. Commencez par remplacer le RelativeLayout par un LinearLayout avec l'orientation définie sur horizontal, et débarrassez-vous de toutes les marges - les marges devraient juste être quelques pixels entre les éléments. Je vous suggère de lire les tutoriels Android sur le fonctionnement des mises en page.

Questions connexes