0

ForLoop を介して既存の RelativeLayout に複数のカスタム ViewGroup を動的に追加しようとしています。

追加しても何も表示されません。おそらく、ViewGroup が追加される前に読み込みが完了していないためでしょうか?

とにかくこれを修正するには?

ありがとうございました、

ゲームアクティビティ.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;
    }
}
4

2 に答える 2

1

これには getBaseContext() はお勧めしません。クラスから呼び出されているため、extendsであるため、Activityを使用するだけです。thisActivityContext

GridItem gi = new GridItem(this, w, h, GridType.EMPTY);

また、子供のIDや配置情報をどこに設定しているのかわかりません。RelativeLayoutID を設定し、どこに配置するかを知るために何かを参照する必要があるビュー。

その後requestLayout()、親で呼び出しを試みます。

于 2012-10-15T14:07:27.480 に答える
0

修正しました。

まず、の代わりに変更GridItemする必要がありました。RelativeLayoutViewGroup

第二に、私はを介して前面に持ち込む必要がありImageViewました。GridItemimg.bringToFront()

于 2012-10-15T15:49:33.227 に答える