2012-05-04 12 views
19

so che posso fare la sovrapposizione ActionBar utilizzando requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)
e può attivare/mostrare la barra di stato nel mio schermo (passando tra FLAG_FULLSCREEN e FLAG_FORCE_NOT_FULLSCREEN).
Questo funziona benissimo. Tuttavia, non desidero spostare il layout quando si alterna la barra di stato.Android sovrapposizione barra di stato con ActionBar

so che posso fare la barra di stato "overlay" (anche se non in modo trasparente) il contenuto utilizzando:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

Questo funziona anche grande, tranne che per la conseguenza (atteso) che, quando si usa un ActionBar, l'ActionBar viene tagliata a metà, metà della barra di stato è fondamentalmente.

Quindi, mi sto chiedendo, c'è un modo per "spostare l'ActionBar in basso" dall'altezza della barra di stato in questo caso?
So che nel caso peggiore, posso farlo con una visualizzazione personalizzata che vive all'interno del layout, ma io preferisco non farlo (voglio beneficiare della ActionBar).

grazie!

+0

Non è consigliabile per mostrare barra degli strumenti, mentre nascondere la barra di stato. – zgulser

risposta

4

quindi a quanto pare, è possibile farlo in Jellybean. Google include due esempi nei documenti API. ecco un link: http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility%28int%29

sommario: utilizzare setSystemUiVisibility in una vista per attivare/disattivare la visibilità (su jellybean +).

+0

Come si può ottenere questo in ICS, qualsiasi idea? –

+1

senza usare la propria barra di azione (implementazione personalizzata che non viene impostata nell'area di decorazione della finestra), non so se sia fattibile. più vicino è possibile ottenere la risposta di David Scott qui sotto. – ahmedre

0

Perché tu non farlo nel Manifesto

android:theme="@android:style/Theme.Black.NoTitleBar" 

di quanto non si ha barra di stato e più spazio per l'ActionBar ??

+0

grazie, ma poiché si tratta di un'app di lettura, voglio che l'utente conosca l'ora in cui tocca lo schermo e desidera che il mio layout sia a schermo intero altrimenti. – ahmedre

3

non è perfetto, ma questo è il modo che ho ottenuto ciò che si vuole:

In onCreate:.

getWindow() SetFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) ;

Poi:

private void hideStatusBar() { 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); 

} 

private void showStatusBar() { 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

} 

Ho anche uno stile l'attività con il seguente:

<style name="readingStyle" parent="@style/Theme.Sherlock"> 
    <item name="android:windowActionBarOverlay">true</item> 
    <item name="windowActionBarOverlay">true</item>  
</style> 

La vostra attività si sposterà verso il basso quando la barra di stato mostra, ma io non lo fanno penso che sia troppo evidente.

+0

grazie David - sfortunatamente, questo era già quello che avevo - stavo cercando di impedire che l'attività si spostasse verso il basso. Immagino che l'unico modo per farlo sia usare un layout personalizzato come barra di azione e impostare l'orologio in overlay invece di usare una vera barra di azioni :( – ahmedre

+0

il metodo 'hideStatusBar()' funziona in modo più efficace di 'setSystemUiVisibility' in congiunzione con ActionBar dal pacchetto di compatibilità – OneWorld

0

mettere questo metodo nella onCreate attività() metodo:

getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

riferiscono: link

Problemi correlati