さて、私は次のコードを持っています。これは、5つの画像と5つのチェックボックスをロードします。各画像に1つずつです。
hLayout.postDelayed(new Runnable() {
DisplayMetrics metrics = getActivity().getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
@Override
public void run() {
if (coupons != null) {
int coupSize = coupons.size();
final int itemWidth = (width / 2);
final int itemHeight = (height / 2);
hLayout.removeAllViews();
for (int i = 0; i < coupSize ; i++) {
Coupon coupon = coupons.get(i);
if (coupon.getImage() != null) {
RelativeLayout parent = new RelativeLayout(getActivity());
RelativeLayout.LayoutParams linearparams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
parent.setLayoutParams(linearparams);
final CheckBox cb = new CheckBox(getActivity());
final ImageView iv = new ImageView(getActivity());
//iv.setScaleType(ScaleType.CENTER_INSIDE);
LayoutParams checkBoxParams = new LayoutParams();
cb.setId(i);
checkBoxParams.height = LayoutParams.WRAP_CONTENT;
checkBoxParams.width = LayoutParams.WRAP_CONTENT;
cb.setOnCheckedChangeListener(changeListener);
RelativeLayout.LayoutParams imageParams = new RelativeLayout.LayoutParams(itemWidth, itemHeight);
imageParams.height = itemHeight;
imageParams.width = itemWidth;
imageParams.addRule(RelativeLayout.BELOW, cb.getId());
parent.addView(cb, checkBoxParams);
parent.addView(iv, imageParams);
hLayout.addView(parent);
ImageUtil.loadImage(coupon.getImage(), iv, itemWidth, itemHeight, "", false, getActivity());
}
}
}
}
}, 200);
最初のチェックボックスと画像がその場所にあります。問題は、最初の画像よりも少し低い他の画像にあります。最初の画像を除いて、それらはすべて位置合わせされていますが、本来あるべきよりも低くなっています(最初の画像と位置合わせされている必要があります)。私は何を間違えましたか?