0

RelativeLayout に 5 つほどの ImageView を追加しようとしています。新しいものはそれぞれ前のものの右側にあります。しかし、私が得たのは、(どうやら) それらがすべて ALIGN_PARENT_LEFT であるかのように、互いに積み重ねられていることです。関連するコード スニペット:

ImageView[] foo = new ImageView[levels];
for (int i = 0; i < levels; i++) { 
    foo[i] = new ImageView(context);
    layoutFoo.addView(foo[i]);
    foo[i].setId(10 + i);
    if (i == 0) {
        RelativeLayout.LayoutParams fooParams = (RelativeLayout.LayoutParams) foo[i].getLayoutParams();
        fooParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        foo[i].setLayoutParams(fooParams);
    } else {
        RelativeLayout.LayoutParams fooParams = (RelativeLayout.LayoutParams) foo[i].getLayoutParams();
        fooParams.addRule(RelativeLayout.RIGHT_OF, foo[i-1].getId());
        foo[i].setLayoutParams(fooParams);
    }
}

私が間違っていることのヒントはありますか?ImageViews に幅がないことは問題ではありません (ビットマップを割り当てていないため)。

編集: ImageView の高さと幅を設定していないことが問題であることが判明しました。解決策は、setLayoutParams() または JustWork の例のようにコンストラクターを使用して設定することです。

4

2 に答える 2

-1

プロパティを設定した後、ImageView を追加する必要があります。

このコードを for ループの最後に移動します。

layoutFoo.addView(foo[i]);

ちなみに、する必要はありませんImageView[]。1 つの ImageView で実現できます。

アップデート:

同じことができるコードは次のとおりです。

ImageView foo;
RelativeLayout.LayoutParams fooParams;
for (int i = 0; i < levels; i++) { 
    foo = new ImageView(context);
    foo.setId(10 + i);
    fooParams = (RelativeLayout.LayoutParams) foo.getLayoutParams(); // I don't understand why you are trying to get params of which hasn't been specified before.
    // If I were you, I would do like:
    fooParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    if (i == 0) {
        fooParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    } else {
        fooParams.addRule(RelativeLayout.RIGHT_OF, foo.getId()-1);
    }
    foo.setImageBitmap(yourBitmap); // Set bitmap.
    foo.setLayoutParams(fooParams);
    layoutFoo.addView(foo);
}
于 2013-09-04T00:56:05.083 に答える
-1

これらの画像を配置する最も簡単な方法は、ギャラリーを使用することだと思います。非推奨ですが、そのようにしたほうがよいと思います。

于 2013-09-04T01:01:46.973 に答える