2

伙计们,

我正在研究将图像显示为网格的自定义视图:

class MyImageGridView extends LinearLayout {
   ....
   public addItem(String imageFileName);
   ...
}

从 MainActivity 的onCreate方法中,我调用addItem了我需要显示的所有图像。

在某些时候,我需要创建子控件。但首先,我需要计算控件的宽度。此宽度按比例基于父控件的宽度。例如,如果 的宽度MyImageGridView为 600,并且我决定每行显示 3 张图像,则我的子控件的宽度将设置为

600/3=200 pixels. 

父控件的宽度也决定了我最终将拥有的子控件的数量。对于网格中的每一行,我最终创建了另一个LinearLayout控件。

我想我可以做到这一切,onSizeChanged以防万一MyImageGridView。但是,看来我不能真正在onSizeChanged. Eclipse 只是锁定。

我无法真正创建控件,onCreate因为控件的宽度尚未确定,因此我真的不知道最终将创建多少个子控件。

我想知道是否有人对动态创建控件的理想事件有更好的了解。

预先感谢您的帮助。

问候,
彼得

4

1 回答 1

0

在这种情况下,您可能可以在 onLayout 期间执行此操作,这将提供从 onMeasure 确定的尺寸。听起来您可能不需要在您的情况下覆盖 onMeasure ,这样可以保持简单。在onLayout期间添加视图时需要谨慎,android 框架为此提供了一些专门的成员。请参阅addViewInLayout ..

于 2013-10-04T22:42:40.610 回答