2010-10-29 13 views
6

Voglio cambiare il layout senza chiamare il metodo onCreate. definisco anche android: configChanges = "orientation | keyboardHidden" nella mia attività e non sta chiamando il metodo onCreate ma il layout non si adatta in modo appropriato alla modalità orizzontale.cambio orientamento senza chiamata onCreate

il layout corrente è simile al seguente.

alt text

dopo il cambio di orientamento paesaggio sembrare come segue: alt text

ma sul paesaggio voglio il seguente risultato.

alt text

v'è alcuna proprietà adiacente auto?

come posso fare?

+0

Vuoi avere l'applicazione in modalità orizzontale per impostazione predefinita o che cosa stai cercando? –

risposta

0

Presumo che tu stia utilizzando un LinearLayout, perché non hai specificato, ma c'è una funzione nella classe LinearLayout chiamata setOrientation() che dovrebbe risolvere questo problema. Dovrai creare un'istanza del tuo layout nel tuo file java (che potresti aver già fatto) e quindi creare un listener di orientamento o ridimensionamento degli eventi sulla tua finestra. Dopodiché modifica semplicemente l'orientamento in orizzontale/verticale in base all'orientamento dello schermo.

+0

sto usando TableLayout. questo è possibile nel layout lineare. –

+0

se è possibile tramite LinearLayout, fornire un codice di esempio. –

+0

sì, è molto semplice usare LinearLayout, puoi trovare il codice sorgente ovunque –

4

non c'è alcuna proprietà di regolazione automatica mentre la vista cambia da verticale a orizzontale.

Per le immagini che si desidera visualizzare in modalità orizzontale

Creare un file filename.xml e progettare il layout per la modalità orizzontale. Assegna al file il nome del file xml precedente nella cartella di layout che si sta utilizzando per l'attività.

Crea cartella in res/nome come il layout-terra e poi tenere il file filename.xml in res/cartella di layout-terra

Si chiamerà automaticamente che res/layout di-terra/filename.xml quando cambia l'orientamento da verticale a orizzontale.

Oppure si può anche utilizzare

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 

     super.onConfigurationChanged(newConfig); 

     if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      //your code 
     } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     //your code 
     } 
    } 
1

Si potrebbe aggiungere android:configChanges="orientation" al tag attività su AndroidManifest.xml. Provalo.

0

Metti solo questo android: configChanges = "orientation | keyboardHidden" nel tag attività in Android manifest.it funziona.

0

Mettete questo nella vostra bro manifest ..

android:configChanges="orientation|keyboardHidden|screenSize|uiMode" 

E 'risolvere il tuo e il mio problema: D

Problemi correlati