Android獲取actionbar高度和StatusBar高度的方法


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根本還沒繪制出來前就需要拿到這個值,這時候這種方法就不靠譜了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM