ImageViewのサイズを幅に基づいて長方形にしたい場合は、onGlobalLayout()
を上書きしてphoto.getWidth()
とします。しかし、それは肖像画の画面でのみ動作し、横画面では動作しません。ImageView.getWidth()ランドスケープとポートレートの画面で同じ値を返します
:風景で
、画像が
を成形し、これはコードであるが矩形ではない:
肖像が正常に動作していますfragment_productdetail.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivImage0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="3dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/noimage"/>
<ImageView
android:id="@+id/ivImage1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="3dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/noimage"/>
<ImageView
android:id="@+id/ivImage2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="3dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/noimage"/>
<ImageView
android:id="@+id/ivImage3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="3dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/noimage"/>
</LinearLayout>
FragmentProductDetail.java
ivPhotos[0] = (ImageView) inflatedView.findViewById(R.id.ivImage0);
ivPhotos[1] = (ImageView) inflatedView.findViewById(R.id.ivImage1);
ivPhotos[2] = (ImageView) inflatedView.findViewById(R.id.ivImage2);
ivPhotos[3] = (ImageView) inflatedView.findViewById(R.id.ivImage3);
for (final ImageView photo : ivPhotos) {
photo.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
photo.getViewTreeObserver().removeOnGlobalLayoutListener(this);
photo.getLayoutParams().height = photo.getWidth();
}
});
}
は、その後、私は風景の中に幅を取得するために)(onGlobalLayout内Log.i("zihad", ""+photo.getWidth());
入れてみてください、それは私の肖像画の幅の同じ値を与えます。だから私はそれを肖像画と風景で動作させるために何をすべきですか?
*の悪い英語のため申し訳ありませんが、私は私の英語
申し訳ありませんが、達成したいことと表示されていることを視覚的に表現できますか?これは私が質問を編集し、答えを提供するのに役立ちます。 –
ああ申し訳ありませんが、 – zihadrizkyef
私はそれを編集しました:D – zihadrizkyef