2012-10-30 12 views
13

Come si imposta la modalità actionbar in fase di esecuzione per non sovrapporre o sovrapporre con il contenuto in fase di esecuzione? Ho provato a utilizzare getWindow().requestFeature(Window.FEATURE_ACTIONBAR_OVERLAY) ma non consente di impostare la modalità dopo aver chiamato setContentView(). Questo può essere fatto, come ho visto farlo nell'app YouTube.Imposta la modalità di sovrapposizione della barra delle azioni in fase di esecuzione in Android

+0

Ciao Sowrabh, hai trovato qualche soluzione? – Wayne

+1

Nessuna fortuna @Wayne. Il meglio che potrei fare è impostare la modalità di sovrapposizione della barra delle azioni su 'Window.FEATURE_ACTIONBAR_OVERLAY' sempre e quindi impostare la coordinata Y dell'intera vista nella parte inferiore della barra di azione quando necessario. Non è una soluzione molto pulita però –

+1

Oh grazie, potrebbe essere una soluzione: D. Ma sarà bello se sappiamo come ha fatto Youtube: D – Wayne

risposta

5

Anche se non è esattamente quello che stai cercando, una soluzione decente sarebbe creare una vista spaziale nella parte superiore del contenuto che è della stessa altezza di ActionBar (android: layout_height = "? Android: actionBarSize"). Quando si desidera attivare la modalità Sovrapposizione, impostare la visibilità dello spaziatore su View.GONE, quando lo si desidera disabilitare, impostarlo su View.VISIBLE.

+0

Questo è sicuramente un work-around valido. La sovrapposizione di ActionBar è uno stile, e questi devono essere impostati prima che vengano mostrati e non cambino in fase di esecuzione, quindi è necessario un work-around. Un problema con questo lavoro è che ottenere l'altezza della barra delle azioni non è semplice come indicato nella risposta, devi 'getActionBar(). GetHeight()' dopo che è visibile perché la barra di azione "impilata" (pensa alle schede della barra delle azioni su un telefono in verticale) non è incluso in Android: actionBarSize e perché non conosciamo tutte le variabili utilizzate da Android per decidere se mostrare o meno una pila: ( – xbakesx

+0

Grazie, ha funzionato nel mio caso – user3819810

Problemi correlati