Comment puis-je avoir une mise en page pour le paysage et une pour le portrait? Je veux prendre une largeur supplémentaire et conserver de l'espace vertical lorsque l'utilisateur fait pivoter le téléphone sur le côté.
Comment puis-je avoir une mise en page pour le paysage et une pour le portrait? Je veux prendre une largeur supplémentaire et conserver de l'espace vertical lorsque l'utilisateur fait pivoter le téléphone sur le côté.
Réponses:
Par défaut, les mises en page de /res/layout
sont appliquées à la fois au portrait et au paysage.
Si vous avez par exemple
/res/layout/main.xml
vous pouvez ajouter un nouveau dossier /res/layout-land
, y copier main.xml
et effectuer les ajustements nécessaires.
Voir également http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts et http://www.devx.com/wireless/Article/40792/1954 pour d'autres options.
portrait
Dans la version actuelle d'Android Studio (v1.0.2), vous pouvez simplement ajouter une mise en page paysage en cliquant sur le bouton dans l'éditeur visuel illustré dans la capture d'écran ci-dessous. Sélectionnez "Créer une variation de paysage"
layout-land
dossier. Une idée comment appeler une mise en page à partir de là? Je ne peux pas utiliser R.layout.layout_name
. J'essaie de configurer mes propres mises en page manuellement lors du changement de configuration, merci.
Les mises en page dans / res / layout sont appliquées à la fois au portrait et au paysage, sauf indication contraire de votre part. Supposons que nous ayons /res/layout/home.xml pour notre page d'accueil et que nous voulions que cela se présente différemment dans les 2 types de mise en page.
Le moyen le plus rapide pour Android Studio 3.xx et Android Studio 4.xx
Accédez à l'onglet Conception de la mise en page de l'activité
2.En haut, vous devez appuyer sur le bouton d' orientation pour l'aperçu , il existe une option pour créer une mise en page paysage (vérifier l'image), un nouveau dossier sera créé en tant que fichier de mise en page xml pour cette orientation particulière
Vous pouvez regrouper votre mise en page spécifique sous la structure de dossiers appropriée comme suit.
layout-land-target_version
c'est à dire
layout-land-19 // cible KitKat
de même, vous pouvez créer vos mises en page.
J'espère que ceci vous aidera
-19
suffixe? Est-ce utile d'une manière ou d'une autre?
Je vais essayer de l'expliquer sous peu.
Tout d'abord, vous remarquerez peut-être que vous devez maintenant utiliser ConstraintLayout comme demandé par google (voir la bibliothèque androix).
Dans votre projet de studio Android, vous pouvez fournir des mises en page spécifiques à l'écran en créant des répertoires res / layout / supplémentaires. Un pour chaque configuration d'écran qui nécessite une disposition différente.
Cela signifie que vous devez utiliser le qualificatif de répertoire dans les deux cas:
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 res 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>
your_item_grid_or_list_layout.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