132 votes

Android : disposition alternative xml pour le mode paysage

Comment puis-je avoir une mise en page pour le paysage et une autre pour le portrait ? Je veux assumer la largeur supplémentaire et conserver l'espace vertical lorsque l'utilisateur fait pivoter le téléphone sur le côté.

2voto

Zhar Points 412

Je vais essayer de l'expliquer brièvement.

Tout d'abord, vous pouvez remarquer que vous devez maintenant utiliser ConstraintLayout comme demandé par google (voir la bibliothèque androix).

Dans votre projet Android studio, vous pouvez fournir des mises en page spécifiques aux écrans en créant des répertoires supplémentaires res/layout/. Un pour chaque configuration d'écran qui nécessite une mise en page différente.

Cela signifie que vous devez utiliser l'option qualificatif de répertoire dans les deux cas :

  • Prise en charge des appareils Android
  • Android en mode paysage ou portrait

En conséquence, voici un exemple :

res/layout/main_activity.xml                # For handsets
res/layout-land/main_activity.xml           # For handsets in landscape
res/layout-sw600dp/main_activity.xml        # For 7” tablets
res/layout-sw600dp-land/main_activity.xml   # For 7” tablets in landscape

Vous pouvez également utiliser le qualificatif avec les fichiers de ressources en utilisant dimens.xml.

res/values/dimens.xml                # For handsets
res/values-land/dimens.xml           # For handsets in landscape
res/values-sw600dp/dimens.xml        # For 7” tablets

res/values/dimens.xml

<resources>
    <dimen name="grid_view_item_height">70dp</dimen>
</resources>

res/values-land/dimens.xml

<resources>
    <dimen name="grid_view_item_height">150dp</dimen>
</resources>

votre_grille_ou_liste_d'articles.xml

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content

    <ImageView
            android:id="@+id/image"
            android:layout_width="0dp"
            android:layout_height="@dimen/grid_view_item_height"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:background="@drawable/border"
            android:src="@drawable/ic_menu_slideshow">

</androidx.constraintlayout.widget.ConstraintLayout>

Source : https://developer.Android.com/training/multiscreen/screensizes

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