我试图通过ForLoop动态地将几个自定义ViewGroup添加到现有的RelativeLayout。
当我添加它们时,不会显示任何内容。也许是因为ViewGroup在添加之前没有完成加载?
无论如何要解决这个问题?
谢谢,
GameActivity.java:
hScrollItems = (RelativeLayout) findViewById(R.id.hScrollItems);
for (int i = 0; i < 5; i++){
int w = getResources().getInteger(R.integer.GridItemWidth);
int h = getResources().getInteger(R.integer.GridItemWidth);
GridItem gi = new GridItem(getBaseContext(), w, h, GridType.EMPTY);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
params.setMargins(w * i, 0, 0, 0);
hScrollItems.addView(gi, params);
}
GridItem.java
public GridItem(Context context, int Width, int Height, GridType Type) {
super(context);
/*LayoutParams params = new LayoutParams(Width, Height);
this.setLayoutParams(params);*/
this.setBackgroundColor(0xFFFFFF33);
ImageView img = new ImageView(context);
img.setBackgroundResource(R.drawable.ic_launcher);
this.addView(img);
}
public enum GridType {
EMPTY("EMPTY"),
HOUSE("HOUSE");
private String value;
private GridType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
答案 0 :(得分:1)
getBaseContext() isn't recommended for this.由于它是从Activity
类调用的,因此您应该使用this
,因为Activity
扩展了Context
。
GridItem gi = new GridItem(this, w, h, GridType.EMPTY);
此外,我没有看到您为孩子设置任何ID或对齐信息的位置。 RelativeLayout
中的视图需要设置其ID,并引用某些内容以便知道放置它们的位置。
之后,尝试拨打父母的requestLayout()
。
答案 1 :(得分:0)
好的我修好了!
首先,我必须将GridItem
更改为RelativeLayout
而不是ViewGroup
。
其次,我必须通过ImageView
将GridItem
中的img.bringToFront()
带到前面。