2011-07-15 60 views
-2

活動加載後,我在屏幕上嘗試我的應用程序格式。問題出現在onCreate()onResume()方法裏面我的ImageView的寬和高= 0。如何在視圖重新調整後運行一些代碼? 我測試onPostResume()但它不工作=(Android中在Android中的活動加載後執行代碼

+2

我覺得你的問題是在第15行,你應該添加一個';'。或者,減少口舌:你可能想要發佈不起作用的代碼(只是一個最小的例子,它顯示什麼不起作用),然後告訴我們你想要什麼,你得到什麼等等等等。 – Nanne

+0

不要以爲我需要解釋代碼,fill_parent高度和寬度的imageview有高度= 0和寬度= 0,而活動加載時,我想執行代碼時,該項目採取真正的大小.. – ChyBy

+1

我想這麼多,這就是爲什麼我添加了評論。如果你首先同意的話,我猜你會發布代碼,對吧?對。對你來說可能很清楚,但我對發生的事情沒有快速的瞭解,所以不能(也不會)幫助。想一想:有什麼看法?它是否設置?它是如何設置的?尺寸應該是多少?我們可以在你要求的時候確定尺寸嗎?圖像是否設置在代碼中?什麼時候? – Nanne

回答

3

意見沒有固定的大小/位置像在黑莓或iPhone;相反,它們是動態奠定了佈局發生明顯較onCreate/onResume,理論上可以發生很多。每個視圖都有方法onMeasureonLayout這是負責的方法,只有在onLayout方法返回後,你可以告訴視圖的大小和位置,在此之前視圖的大小爲0,位置爲0(正如你已經注意到的那樣)

因此,試圖獲取ImageView的大小onCreate/onResume是沒有意義的,因爲onLayout尚未在該p處被調用oint。

相反,覆蓋onLayout這樣做你的東西有:

public class MyImageView extends ImageView { 
    @Override 
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) { 
     super.onLayout(changed, left, top, right, bottom); 
     // at this point size and position are known 
     int h = getHeight(); 
     int w = getWidth(); 
     doSomethingCool(h,w); 
    } 
} 
+0

感謝您的回答=) – ChyBy

相關問題