Come posso avere un layout per il paesaggio e uno per il ritratto? Voglio assumere una larghezza extra e conservare lo spazio verticale quando l'utente ruota il telefono lateralmente.
Come posso avere un layout per il paesaggio e uno per il ritratto? Voglio assumere una larghezza extra e conservare lo spazio verticale quando l'utente ruota il telefono lateralmente.
Risposte:
Per impostazione predefinita, i layout in /res/layout
vengono applicati sia in verticale che in orizzontale.
Se hai per esempio
/res/layout/main.xml
puoi aggiungere una nuova cartella /res/layout-land
, copiarla main.xml
e apportare le modifiche necessarie.
Vedi anche http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts e http://www.devx.com/wireless/Article/40792/1954 per alcune altre opzioni.
portrait
Nella versione corrente di Android Studio (v1.0.2) puoi semplicemente aggiungere un layout orizzontale facendo clic sul pulsante nell'editor visivo mostrato nello screenshot seguente. Seleziona "Crea variante orizzontale"
layout-land
cartella. Qualche idea su come chiamare un layout da lì? Non è possibile utilizzare R.layout.layout_name
. Sto provando a configurare i miei layout manualmente dopo la modifica della configurazione, grazie.
I layout in / res / layout vengono applicati sia in verticale che in orizzontale, se non diversamente specificato. Supponiamo di avere /res/layout/home.xml per la nostra homepage e vogliamo che appaia diversamente nei 2 tipi di layout.
Il modo più veloce per Android Studio 3.xx e Android Studio 4.xx
1. Vai alla scheda di progettazione del layout dell'attività
2.In alto dovresti premere sul pulsante di orientamento per l'anteprima , c'è un'opzione per creare un layout orizzontale (controlla l'immagine), verrà creata una nuova cartella come file di layout xml per quel particolare orientamento
È possibile raggruppare il layout specifico nella struttura di cartelle corretta come segue.
Layout-land-target_version
vale a dire
layout-land-19 // target KitKat
allo stesso modo puoi creare i tuoi layout.
Spero che questo ti possa aiutare
-19
suffisso? È utile in qualche modo?
Proverò a spiegarlo a breve.
Innanzitutto, potresti notare che ora dovresti utilizzare ConstraintLayout come richiesto da google (vedi libreria androix).
Nel tuo progetto Android Studio, puoi fornire layout specifici dello schermo creando ulteriori res / layout / directory. Uno per ogni configurazione dello schermo che richiede un layout diverso.
Ciò significa che devi utilizzare il qualificatore di directory in entrambi i casi:
Di conseguenza, ecco un esempio:
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
Puoi anche usare il qualificatore con i file di risorse usando 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 / valori / dimens.xml
<resources>
<dimen name="grid_view_item_height">70dp</dimen>
</resources>
res / valori-terra / 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>
Fonte: https://developer.android.com/training/multiscreen/screensizes