2012-02-14 137 views
0

我有一個自定義FrameLayout類,它在OnSizeChanged事件上做一些自定義繪圖。它是在那裏完成的,而不是在OnDraw事件中,以避免重入和性能問題。這在單個活動應用程序中正常工作,但在TabActivity中失敗。當前選項卡中的活動呈現正常,但非活動選項卡中的活動未呈現。 Here你可以下載一個重現此項目的示例項目。該項目是HelloTabWidget,但也使用HelloAndroid項目。自定義FrameLayout不在TabActivity中渲染

發現onWindowVisibilityChanged事件可能有幫助,但需要找到足夠的大小來繪製我的控件。在下面的代碼片段中,我需要一種方法來在onWindowVisibilityChanged中查找容器的大小。

@Override 
protected void onWindowVisibilityChanged(int visibility) { 
    super.onWindowVisibilityChanged(visibility); 

    int width = this.getWidth(); 
    int height = this.getHeight(); 

    drawContent(getCtxt(), width, height); 
} 

回答

0

將溶液使用的OnDraw事件做一些重構到部件,並使用一個布爾標誌以確定何時畫布是髒,以避免不必要的重入。 也必須設置爲false。