2012-08-08 4 views
5

Voglio che la mia barra del titolo sia nascosta quando gira il dispositivo in orizzontale. Ho visto l'opzione XML per nascondere la barra del titolo, e il seguente esempio di farlo a livello di codice:Nascondere la barra del titolo/barra di notifica quando il dispositivo è orientato verso orizzontale

//Remove title bar 
this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
//Remove notification bar 
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

MA, sto usando configChanges parametri per orientation e screenSize, quindi la mia attività non viene ricreato di nuovo quando si sta orientando verso il paesaggio (lo sto facendo per alcuni motivi). Quindi non posso usare i metodi sopra indicati perché queste chiamate devono essere fatte prima di setContentView().

Quindi qualche idea? Grazie.

+0

Youtube applicazione sta facendo in qualche modo ... e sono sicuro che non stanno creando ancora una volta l'attività (provare a eseguire il video in verticale e poi girare al paesaggio.). –

+1

Non penso che tu possa cambiare il decorview dopo aver chiamato setcontentview. Ti suggerisco di avviare la visualizzazione in modalità a schermo intero e rendere la tua titlebar parte della tua contentview. in questo modo, cambiando, puoi nasconderla. – Shubhayu

+1

leggi questo post http://stackoverflow.com/questions/4853505/android-how-to-disable-feature-no-title, suggerisci di definire il tuo titolo e puoi nasconderlo e mostrare come desideri. – idiottiger

risposta

2

prima controllare il vostro orientamento del dispositivo utilizzando seguente codice

La configurazione attuale, come quello usato per determinare quali risorse per recuperare ecc, disponibile presso oggetto Configuration Risorse come:

getResources().getConfiguration().orientation 

Quindi eseguire la codifica necessaria per nascondere la barra del titolo e la barra di notifica.

+3

qual è la "codifica necessaria ???" questa è in realtà la mia domanda !!!! –

6

si Supponendo che hanno definito configChanges per la Activity nel manifesto, allora si può ottenere il problema ignorando onConfigurationChanged metodo:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      getActionBar().hide(); 
    } else { 
      getActionBar().show(); 
    } 
} 

Si dovrà utilizzare getSupportActionBar() invece di getActionBar() se si utilizza la libreria di supporto.

+0

In AppCompatActivity non è attivato! – IgniteCoders

-1

Nel vostro "AndroidManifest.xml", nel tag di attività è possibile specificare "NoTitleBar" nella proprietà tema in modo che sia sempre nascondere il titolo:

<activity 
    android:name="com.my_package.MyActivity" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:configChanges="navigation|orientation|screenLayout|layoutDirection"> 
12

era alla ricerca di una risposta, finito qui, mettere insieme i pezzi e qui sono:

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 
else { 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 
+0

Grazie, lavoro per me – Tony

+0

ha funzionato per me 2 –