Android: layout alternativo xml per la modalità orizzontale


Risposte:


217

Per impostazione predefinita, i layout in /res/layoutvengono 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.xmle apportare le modifiche necessarie.

orientamento

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.


1
dovrei mantenere il nome layout-land o qualsiasi altra parola @marapet
Vamsi Pavan Mahesh

9
Non puoi usare nessun'altra parola
Foo

La mia immagine di sfondo si estende sul paesaggio. Ho layout-land e drawable-land..still si estende..ho provato a usare la stessa immagine, immagini a 9 patch, mpi, hdpi in tutti ... il problema persiste ancora :(
Prabs,

qual è la parola perportrait
dsdsdsdsd,

@dsdsdsdsd secondo Android Studio è layout-port
Gregzenegair

76

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"

Android Studio aggiunge layout orizzontale


Tranne che mette una nuova copia nella tua layout-landcartella. 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.
Azurespot

2
@NoniA. Dovrebbe rilevare quando il telefono passa in orizzontale e chiamare automaticamente da terra di layout.
Distwo

43

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.

  1. crea cartella / res / layout-land (qui manterrai i tuoi layout regolati orizzontalmente)
  2. copia home.xml lì
  3. apportare le necessarie modifiche

fonte


che dire di "ritratto"?
dsdsdsdsd,

Che dire dei nuovi <sw> qualificatori?
Ruchir Baronia,

6

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

inserisci qui la descrizione dell'immagine


2

È 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


Grazie per aver risposto, ma non vedo come la tua risposta sia di aiuto perché questa domanda ha già ricevuto risposta. Forse potresti spiegare il vantaggio del -19suffisso? È utile in qualche modo?
Bryan Field

0

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:

  • Supporto per dispositivi Android
  • Modalità orizzontale o verticale Android

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.