Проблема с растяжением изображения Android

У меня есть RecyclerView, использующий его как сетку. В каждом представлении я загружаю изображение с URL-адреса. Я пробовал с Picasso, Fresco и Glide. У меня есть только одна проблема со всеми этими библиотеками: изображения растягиваются. Это связано с тем, что размеры изображений отличаются. Я предоставляю образец моего SimpleDraweeView.

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/sdvRestaurant"
    android:layout_width="match_parent"
    android:layout_height="@dimen/_120sdp"
    app:actualImageResource="@drawable/bg_city"
    app:actualImageScaleType="fitXY"
    android:adjustViewBounds="true"
    android:background="@color/card_shadow_2"/>

Мой вопрос: как правильно избежать этой проблемы с растяжением изображения? Я думаю, что невозможно изменить размер изображения. Тип шкалы, который я пробовал, — fitXY, но это не помогло. Кроме того, атрибут centerCrop обрезает исходное изображение. Пожалуйста, дайте подсказку, чтобы решить эту проблему. Заранее спасибо.


person Amsheer    schedule 09.12.2018    source источник


Ответы (1)


Вы используете фиксированную высоту для своих изображений, из-за чего изображение растягивается до этого размера. Я полагаю, вам необходимо иметь фиксированный размер каждого изображения, когда вы показываете их в сетке. Однако вы можете установить для общего контейнера макета фиксированную высоту, в то время как высота изображения может быть равна wrap_content. Вот что вы можете попробовать.

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/sdvRestaurant"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="fitCenter"
    android:background="@color/card_shadow_2"
    android:src="@drawable/bg_city" />

Пожалуйста, убедитесь, что я установил layout_height на wrap_content и установил scaleType на fitCenter. Надеюсь, это поможет!

person Reaz Murshed    schedule 09.12.2018
comment
У меня есть одно сомнение с этим. Если мы используем wrap_content, то высота одной строки отличается от другой, верно? - person Amsheer; 09.12.2018
comment
Думаю, я учел это в своем ответе. Существует ли родительский макет вашего элемента списка, верно? Установите ограничения высоты для этого родительского макета, который может быть LinearLayout или RelativeLayout. Пожалуйста, дайте мне знать, если у вас возникнет другая путаница. - person Reaz Murshed; 09.12.2018