2011-10-14 29 views
10

我有一個非常簡單的自定義視圖,帶有onMeasure()重寫。我的onMeasure()根據背景Drawable決定大小。當視圖首先從xml創建時,一切正常。但是隨後我以編程方式設置了不同的背景,因此視圖應該調整大小。該視圖現在有不同的背景,但不會調整大小,並且不會調用onMeasure()View.onMeasure()未調用

我試過一切 - requestLayout(),forceLayout(),invalidate(),setLayoutParams() - 沒有任何影響。我究竟做錯了什麼?我只是想讓我的視圖調整大小。

回答

-2

您是否嘗試過這種明顯的事情,即您的方法如何聲明?

如果您沒有添加@override註釋,請添加它,並查看您的編譯器是否告訴您它沒有覆蓋任何內容。如果是這樣,請檢查名稱和方法簽名onMeasure

否則,請確保您瞭解何時應該調用measure()方法:How Android draws Views

+0

是的,我正在使用@Override - 當我的Activity被創建時,我發現我的onMeasure()會被調用兩次。但它不會在View.setBackground()之後調用。 – fhucho

+0

您鏈接的文章表明requestLayout()應該可以工作,但它不會。 – fhucho

1

問題是我在視圖的onSizeChanged()中調用setBackground()。我重構了代碼,現在它可以工作。