自定义FrameLayout不在TabActivity中呈现

时间:2012-02-14 09:45:08

标签: android android-layout

我有一个自定义的FrameLayout类,它在OnSizeChanged事件上执行一些自定义绘图。它是在那里完成的,而不是在OnDraw事件中,以避免重入和性能问题。这在单个活动应用程序中工作正常,但在TabActivity中失败。当前选项卡中的活动呈现正常,但未呈现非活动选项卡中的活动。 Here您可以下载重现此项目的示例项目。该项目是HelloTabWidget,但也使用HelloAndroid项目。

发现onWindowVisibilityChanged事件可能会有所帮助,但需要找到足够的大小来绘制我的控件。在下面的代码片段中,我需要一种在onWindowVisibilityChanged中查找容器大小的方法。

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

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

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

1 个答案:

答案 0 :(得分:0)

解决方案是使用OnDraw事件对组件进行一些重构,并使用布尔标志来确定画布何时是脏的以避免不必要的重入。 SetWillNotDraw也必须设置为false。