私はAndroidアプリを開発しています。私のアプリでは、動的にビューのリストを膨らませる必要があります。私はそれらを加えて働きました。問題は、レイアウトの幅と高さを設定することです。今私は簡単なプロジェクトで私の問題を実証します。実際、私のプロジェクトは、この単純なプロジェクトよりはるかに複雑です。AndroidでXMLの膨張したビューのレイアウトの幅、高さ、重さを設定できません
私はこのレイアウトにビューを膨張させています。
<LinearLayout
android:orientation="horizontal"
android:id="@+id/cm_photos_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
私は、ビットマップのリストをループして注意してください従っ
for(Bitmap bmp : bitmaps)
{
View preview = layoutInflater.inflate(R.layout.item_cm_preview_image,null);
ImageView previewImageView = (ImageView)preview.findViewById(R.id.item_cm_preview_image);
previewImageView.setImageBitmap(bmp);
container.addView(preview);
}
として動的にビューを追加していが、上記のコードでは、コンテナは、のLinearLayoutは、上記で親XMLに動的に追加されます。
container = new LinearLayout(this);
container.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
container.setLayoutParams(params);
parentLinearLayout.addView(container);
あなたが見ることができるようにこれは
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_weight="1"
android:layout_height="400dp"
android:layout_width="0dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:scaleType="centerCrop"
android:id="@+id/item_cm_preview_image"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
私item_cm_preview_image.xmlですが、私はXMLで1に、幅0とlayout_weightを400dpするレイアウトの高さを設定します。したがって、layout_weightのために、すべてのイメージの高さは同じでなければならず、widthは等しくなければなりません。しかし結果は期待通りではありません。下のスクリーンショットを見ることができます。あなたはスクリーンショットで見ることができるように
、両方layout_weightと高さは、すべて膨張したビューのために働いていません。しかし、追加のViewGroupを動的に追加してそのレイアウトにビューを膨張させると、それは機能しています。以下は私のコードは
//This happening in for loop
LinearLayout wrapper = new LinearLayout(this);
wrapper.setLayoutParams(new LinearLayout.LayoutParams(0,500,1));
View preview = layoutInflater.inflate(R.layout.item_cm_preview_image,null);
ImageView previewImageView = (ImageView)preview.findViewById(R.id.item_cm_preview_image);
previewImageView.setImageBitmap(bmp);
wrapper.addView(preview);
container.addView(wrapper);
でこれが結果です:
あなたは、私が余分なダイナミックな線形レイアウトを使用する際に作業layout_weightと高さの両方を見ることができるように。 XMLのレイアウトの重みと高さを設定できないのはなぜですか?なぜ二番目の方法が働いていますか? XMLレイアウトファイルで重量と高さを設定するにはどうすればよいですか?出来ますか?
ありがとう、ありがとうございます。私はそれを働かせる。これはまさに私が知りたいことです。ありがとう。 –
私のために働いてくれてありがとう – pcj