2015-03-31 10 views
9

Ho riscontrato un problema che influisce sull'altezza del layout relativo mentre stavo cercando di aggiungere il colore alla barra di stato."FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS" riguarda getRootView(). GetHeight()

adding Flag interessato dal calcolo dei relativi layout altezza di rootView.

private void changeStatusBarColor(){ 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Window window = getWindow(); 
      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
      window.setStatusBarColor(getResources().getColor(R.color.red_e31837)); 
     } 
    } 

Ho un osservatore di viste dell'albero che mi aiuta a tracciare l'altezza di rootView.

private ViewTreeObserver.OnGlobalLayoutListener keyboardLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 

      int heightDiff = wrapper.getRootView().getHeight() - wrapper.getHeight(); 
} 

int heightDiff uguale a 1920 se uso FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS ma se io non uso changeStatusBarColor(), int heightDiff uguale al 1776 (calcola senza ActionBar e statusbar immagino). Ma perché l'aggiunta di questo flag cambia i calcoli? Grazie in anticipo!

+1

Se si passa a quella bandiera, il gestore di finestre offre spazio aggiuntivo per disegnare nell'area della barra di sistema. Non è necessario passare questo flag per impostare il colore della barra di stato, è sufficiente la chiamata a 'setStatusBarColor (int)'. – alanv

+1

@alanv Grazie, ho capito il motivo; ma se non utilizzo flag, il colore della barra di stato non cambia. L'ho provato all'inizio del mio lavoro. Sai perché potrebbe accadere? – MiloRambaldi

+0

@MiloRambaldi, Ciao! Risolvi questo problema? – BArtWell

risposta

3

Nel mio caso, si è verificato un problema nella libreria SlidingMenu. Ecco uno solution.

+1

Grazie mille. Funzionava anche con la libreria AndroidResideMenu. [Qui] (http://stackoverflow.com/questions/28952210/android-residemen-library-bottom-of-fragment-has-cropping-issue) è la soluzione simile che ho fatto. – MiloRambaldi

Problemi correlati