ActionBar:
getActionBar().getHeight();
StatusBar:
/** * 獲取狀態欄高度 * * @return */ public static int getStatusBarHeight(Context context) { Class<?> c = null; Object obj = null; java.lang.reflect.Field field = null; int x = 0; int statusBarHeight = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(x); return statusBarHeight; } catch (Exception e) { e.printStackTrace(); } return statusBarHeight; }
網絡上有很多介紹取狀態欄的方法,但有一定的局限性。比如:
狀態欄高度
View的getWindowVisibleDisplayFrame(Rect outRect)附值outRect后,outRect.top()即是狀態欄高度
標題高度
View的getWindowVisibleDisplayFrame(Rect outRect1)附值outRect后,outRect.height()-view.getheight()即是標題高度。
這種方式只適用於View已經繪制出來的情況下,才能拿到相應的值,而且如果我沒猜錯的話,這個view還應該填充屏幕。 但很多情況下我們的view根本還沒繪制出來前就需要拿到這個值,這時候這種方法就不靠譜了。