伙计们,
我正在处理一个将图像显示为网格的自定义视图:
class MyImageGridView extends LinearLayout {
....
public addItem(String imageFileName);
...
}
从 MainActivity 的onCreate
方法中,我调用addItem
来显示我需要显示的所有图像。
在某些时候,我需要创建子控件。但首先,我需要计算控件的宽度。此宽度按比例基于父控件的宽度。例如,如果 MyImageGridView
的宽度为 600,并且我决定每行显示 3 个图像,则子控件的宽度将设置为
600/3=200 pixels.
父控件的宽度也决定了我最终将拥有的子控件的数量。对于网格中的每一行,我最终会创建另一个LinearLayout
控件。
我想我可以在MyImageGridView
的情况下onSizeChanged
做这一切.但是,似乎我无法真正在onSizeChanged
中创建任何子控件。日食只是锁定。
我无法真正创建onCreate
控件,因为控件的宽度尚未确定,因此我真的不知道我最终会创建多少个子控件。
我想知道是否有人对动态创建控件的理想事件有更好的想法。
提前感谢您的帮助。
问候
彼得
您可能可以在onLayout期间执行此操作,它将提供由onMeasure确定的尺寸。听起来您可能不需要在您的情况下覆盖 onMeasure,因此保持简单。在onLayout期间添加视图时需要谨慎,android框架提供了一些专门的成员来执行此操作。请参阅添加视图布局。