2013-02-24 41 views
0

也許這是一個簡單的問題... 我現在正在研究一個繪圖應用程序,其主要活動(A)正在擴展名爲DoodleView的View。android在主要活動中獲得擴展視圖的維數

我知道如何通過onSizeChanged(int w, int h, int oldW, int oldH)來測量DoodleView中的尺寸,但我想知道如何在A中測量DoodleView的尺寸。我研究了一些其他類似的問題,但似乎大多數人都在問如何在擴展視圖中獲取維度。

我曾嘗試在A的OnCreate以下內容:W和H.

private DoodleView doodleView; 
    doodleView = (DoodleView) findViewById(R.id.doodleView); 

    doodleViewWidth = doodleView.getMeasuredWidth(); 
    doodleViewHeight = doodleView.getMeasuredHeight(); 

    Toast.makeText(Doodlz.this, "W=" + doodleViewWidth + "H= "+doodleViewHeight, Toast.LENGTH_LONG).show(); 

而且敬酒報道0

是否有可能得到的主要活動中擴展視圖的尺寸?我想問一下,因爲在這個主要活動中還有一些GetActivityResult需要根據DoodleView維度來操作導入的圖片。

非常感謝!

+1

in OnCreate()doodleView尚未測量。你有沒有試圖使用ViewTreeObserver來知道doodleView被繪製的時刻(此時它應該被測量)。 – sandrstar 2013-02-24 06:17:26

回答

0

這應該做的工作:

doodleView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     doodleViewWidth = doodleView.getWidth(); 
     doodleViewHeight = doodleView.getHeight(); 
     // here goes your code... 
    } 
}); 

編輯: 請注意,這兩個變量不能在onGlobalLayout之前被訪問()沒有被調用至少一次(或他們只是0)。取決於你需要什麼和什麼時候你的代碼的值看起來不同。 您可以將使用onGlobalLayout()方法中的值的代碼放在一起,也可以使用Handler發送消息,以及在Handler的handleMessage()中處理消息。

+0

我已經嘗試過,但它仍然返回null ... =(你有任何提示嗎? – pearmak 2013-02-24 16:39:41

+0

請閱讀我更新的答案。 – 2013-02-24 18:46:44

相關問題