2013-08-22 32 views
1

我有一個自定義視圖需要屏幕分辨率來做一些數學運算......它需要縮放一些文本,以便它始終適合視圖中的空間。所以我需要知道視圖的大小。Eclipse圖形佈局窗口度量返回空指針異常

下面的代碼在設備和模擬器上正常工作。但它在Eclipse圖形佈局預覽中爆炸並帶有NullPointerException。看來WindowManager不能在Eclipse預覽中工作。所以,現在,我正在檢查價值,並在不合理的情況下對它進行硬編碼......但這也意味着我需要不斷編輯數字以測試不同的屏幕尺寸。

必須有更好的方法。任何人?

感謝

@Override 
protected void onMeasure(int widthSpec, int heightSpec) { 

    Context context=this.getContext().getApplicationContext(); 
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 

    wm.getDefaultDisplay().getMetrics(metrics); 
    int displayWidth = metrics.widthPixels; 
    int displayHeight = metrics.heightPixels; 

    if (!(displayWidth > 0)) 
     displayWidth = 720; 

    ... 

回答

0

,我認爲你應該使用的getContext()。getResources()。getDisplayMetrics()。從窗口管理器獲取它可能有點過於「低級」,以便日食很好地處理。

我還建議您使用度量參數而不是displaymetrics,除非您有權限在視圖/活動邊界外繪製,否則您嘗試適合的實際空間總是傳遞到onMeasure WidthSpec/HeightSpec。 。