2014-04-09 54 views
2

我怎樣才能得到沒有狀態欄的屏幕高度(像素)&操作欄或者如果任何機構告訴如何獲得狀態欄和操作欄的高度,我也會有所幫助。我已經找到了屏幕高度,但它包括狀態欄的操作欄&。我使用支持庫v7的行動bar.I在網上搜索,但這些解決方案不適合我。如何獲得沒有狀態欄和操作欄的屏幕高度(像素)?

+0

使用DisplayMetrics類獲取寬度和高度。 – Loganathan

+0

我已經使用此課程並能夠找到整個屏幕高度,包括狀態欄和操作欄。請讓我知道如何得到沒有狀態欄和操作欄的屏幕高度。感謝 – user3302257

回答

4

GET狀態條的高度,你可以喜歡:

Rect rectangle = new Rect(); 
Window window = activity.getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectangle); 
int statusBarTop = rectangle.top; 
int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
int statusbarHeight = Math.abs(statusBarTop - contentViewTop); 

和什麼有關行動吧,actionbarsherlock有常數值爲:abs__action_bar_default_height。也許你應該嘗試在支持庫中找到那樣的動作吧

p.s.無論如何,由於您知道狀態欄高度,因此您可以通過減去活動的主佈局屏幕X值和狀態欄高度值來獲取操作欄高度。它看起來是這樣的:

mMainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 

      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 statusbarHeight = Math.abs(statusBarHeight - contentViewTop); 

      int[] location = {0,0}; 
      mMainLayout.getLocationOnScreen(location); 

      int actionbarheight = Math.abs(location[0] -statusBarHeight); 
      Toast.makeText(MainActivity.this, actionbarheight + "", 1).show(); 
     } 
    }); 

這是寫在「飛」,只是給你一個想法如何做到這一點。

+0

我使用支持庫v7 appcompat顯示操作欄。感謝您的回覆 – user3302257

+0

在這裏「contentViewTop」狀態欄和操作欄的總高度? – user3302257

+0

否,contentViewTop是活動屏幕的頂部(帶有操作欄,但沒有狀態欄) – OFFmind

相關問題