ImageView adjustViewBounds не работает с Relative Layout

У меня есть ImageView и установите его layout_height в «100dp» и его layout_width на «wrap_content».

Используемый для рисования размер имеет более крупные фактические размеры, равные 130dp (ширина) X 215dp (высота).

Когда ImageView помещается внутри LinearLayout , если я устанавливаю для параметра adjustViewBounds значение true, он получает ширину, которая измеряется в соответствии с соотношением сторон чертежа и layout_width.

Однако при размещении внутри RelativeLayout ImageView получает ту же ширину, что и drawable (130dp), независимо от настроек adjustViewBounds.

В обоих случаях изображение создает корреляцию без искажений, однако границы ImageView отличаются.

RelativeLayout:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/background_light"> <ImageView android:layout_width="wrap_content" android:layout_height="100dp" android:adjustViewBounds="true" android:src="@drawable/phone_orange" android:contentDescription="@null" /> </RelativeLayout> 

ImageView в относительной компоновке

LinearLayout:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/background_light" android:orientation="vertical" > <ImageView android:layout_width="wrap_content" android:layout_height="100dp" android:adjustViewBounds="true" android:contentDescription="@null" android:src="@drawable/phone_orange" /> </LinearLayout> 

ImageView в LinearLayout

Почему ImageView разному измеряет эти два сценария? Есть ли способ заставить ImageView вести себя так же, как в случае LinearLayout (обертывание его с помощью LinearLayout работает, но это не чистое решение)?

 android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxHeight="100dp" android:adjustViewBounds="true" 

Я получил его там

Использовать ширину и высоту изображения для соответствия match_parent

 private void addView(Drawable d) { RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); ImageView iv = new ImageView(this); iv.setImageDrawable(d); iv.setAdjustViewBounds(true); iv.setScaleType(ImageView.ScaleType.MATRIX); iv.setLayoutParams(lparams); rl.addView(iv); iv.setOnTouchListener(this); }