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