2012-01-07 31 views
2

我創建了一個自定義視圖,並將其添加到我的佈局在xml文件中。我試圖用點擊事件刷新自定義視圖,但我無法弄清楚如何從不同的類調用onDraw方法。 invalidate和postInvalidate不刷新自定義視圖。如何從另一個類調用onDraw?

回答

4

您應該在視圖內部創建方法,將視圖內部的更改和調用視爲無效。

public void setTextSize (int size) { 
     mTextSize = size; 
     invalidate(); 
} 

完全適合我。

0

絕對應該調用View.invalidate()。確保視圖是可見的並且具有度量尺寸 - 即確保視圖getMeasuerdWidth()和getMeasuerdHeight()返回> 0。

您在您的ondraw方法的開始處放置一條日誌消息以驗證它是否有效。但絕對應該是無效的()。可能你的數據沒有變化?

0

無效的視圖結果調用onDraw()方法。

通過調用來自不同類的customViewClassName.invalidate()函數調用onDraw()方法。

0

我會使用消息處理程序來實現這種機制。在您的自定義View類中,創建一個Handler,然後將此處理函數的引用傳遞給該按鈕(例如,在您的Activity的onCreate事件中),然後使用sendMessage()/ handleMessage()機制在Button和其他視圖。

如果需要,此方法還允許所有其他組件與您的自定義視圖很好地交互。

+0

我應該從自定義視圖發送什麼信息到我的活動課程?我似乎無法發送無效呼叫或畫布。 – user1134179 2012-01-08 02:35:20