2015-04-01 9 views

risposta

26

altezza della barra di stato

L'altezza della barra di stato dipende dalla dimensione dello schermo, ad esempio in un dispositivo con 240 x 320 dimensioni schermo l'altezza della barra di stato è 20px per un dispositivo con 320 x 480 dimensioni schermo l'altezza della barra di stato è 25px per un dispositivo con 480 x 800 status altezza della barra deve essere 38px

quindi vi consiglio di utilizzare questo script per ottenere l'altezza barra di stato

Rect rectangle = new Rect(); 
Window window = getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectangle); 
int statusBarHeight = rectangle.top; 
int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
int titleBarHeight= contentViewTop - statusBarHeight; 

Log.i("*** Value :: ", "StatusBar Height= " + statusBarHeight + " , TitleBar Height = " + titleBarHeight); 

per ottenere l'altezza della barra di stato sul metodo della vostra attività onCreate(), utilizzare questo metodo:

public int getStatusBarHeight() { 
     int result = 0; 
     int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); 
     if (resourceId > 0) { 
      result = getResources().getDimensionPixelSize(resourceId); 
     } 
     return result; 
} 

Tasti soft Key bar

Questo metodo è molto utile per impostare il layout padding in Android KitKat (4.4). Usando questo, puoi evitare che la barra dei pulsanti morbidi si sovrapponga al tuo layout.

Procedimento getRealMetrics è disponibile solo con API 17 e +

@SuppressLint("NewApi") 
private int getSoftButtonsBarHeight() { 
    // getRealMetrics is only available with API 17 and + 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     DisplayMetrics metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     int usableHeight = metrics.heightPixels; 
     getWindowManager().getDefaultDisplay().getRealMetrics(metrics); 
     int realHeight = metrics.heightPixels; 
     if (realHeight > usableHeight) 
      return realHeight - usableHeight; 
     else 
      return 0; 
    } 
    return 0; 
} 

Riferimento:

Height of status bar in Android

Dimension of soft buttons bar

+1

Wow grazie mille A questa risposta. Pensavo che il secondo metodo non avrebbe funzionato nel caso in cui avessi contemporaneamente una barra di stato e di softbutton, suppongo di aver sbagliato, l'ho già testato e funziona. : D Ancora meglio, funziona anche con API 16! – Joske369

+0

@ sei il benvenuto. Ora modifica ;-) –

+0

C'è solo un problema quando la barra di stato è la barra dei soft button, il primo metodo restituisce 25 pixel e il metodo dei soft button restituisce 48 pixel (sony xperia tablet s) – Joske369

Problemi correlati