2010-01-23 12 views
115

Ho visto dei riferimenti per poter specificare due file xml di layout separati per un'attività, uno per Portrait e uno per Landscape. Non sono stato a trovare alcuna informazione su come farlo però. Come faccio a specificare per ogni attività quale file xml è il layout verticale e qual è il layout Paesaggio?Come si specificano layout diversi per orientamento verticale e orizzontale?

È anche possibile specificare layout diversi per diverse dimensioni dello schermo? Se è così, come è fatto?

risposta

169

Creare una directory layout-land e inserire la versione orizzontale del file XML di layout in tale directory.

+2

Ciò significa che tutte le attività devono definire sia una vista orizzontale che una vista verticale se lo faccio? –

+13

No, se non esiste una definizione del layout di base, utilizza solo il layout XML nella directory di layout standard. –

+0

nel mio caso, layout-land non funziona quando sto usando, android: configChanges = "orientation | keyboardHidden | screenSize" –

58

Basta mettere sotto cartelle separate con nomi diversi a seconda dell'orientamento e della risoluzione, il dispositivo selezionerà automaticamente quello giusto per le sue impostazioni dello schermo

Maggiori informazioni qui:

http://developer.android.com/guide/practices/screens_support.html

sezione "Indirizzi di qualificazione delle risorse per le dimensioni dello schermo e la densità"

+0

Funziona solo per OS versioni 1.6 o successive. Se si desidera supportare 1.5, è necessario questo collegamento: http://developer.android.com/guide/practices/screens-support-1.5.html –

+2

@Silvio Donnini - i collegamenti non hanno più le informazioni richieste. – itsaboutcode

+2

@itsaboutcode Sì, lo fa: vai a "Utilizzo dei qualificatori di configurazione" – Danation

2

o utilizzare questo:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:scrollbars="vertical" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent"> 

    <LinearLayout android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

    <!-- Add your UI elements inside the inner most linear layout --> 

    </LinearLayout> 
</ScrollView> 
16

Solo un promemoria:

Rimuovere orientation da attributo android:configChanges per l'attività nel file manifest xml se è stato definito che:

android:configChanges="orientation|screenLayout|screenSize" 
3

Creare una nuova directory layout-land, quindi creare xml file con lo stesso nome in layout-land come era la directory layout e allinea lì il tuo contenuto per la modalità orizzontale.

Nota che l'id del contenuto in entrambi xml è uguale.

14

Per gli amanti del mouse! dico fate clic destro sulla cartella di risorse e aggiungere nuovi file di risorse, e dalle qualificazioni disponibili selezionare l'orientamento:

enter image description here


Ma ancora è possibile farlo manualmente per esempio, aggiungendo la sottocartella " Layout-terre" per

"Your-Project-Direzione \ app \ src \ principali res \"

da allora tutti i file layout.xml in questo sotto-cartella funziona solo per la modalità orizzontale AUT omaticamente.

Utilizzare "Porta di layout" per la modalità verticale.