Picasso .fit(). CenterCrop() не работает с WRAP_CONTENT

У меня есть ImageView что я создаю программно, и загружаю изображение в использование Пикассо. Высота и ширина ImageView установлены на WRAP_CONTENT, Изображение довольно большое, поэтому я хочу использовать Пикассо .fit().centerCrop() методы для экономии памяти. Однако, когда я добавляю методы, изображения не отображаются, и я думаю, что это должно быть из-за WRAP_CONTENT, Вот мой код:

ImageView iv = new ImageView(getContext());
RelativeLayout.LayoutParams centerParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
iv.setLayoutParams(centerParams);
Picasso.with(context)load(path).fit().centerCrop().into(iv); //if I remove .fit().centerCrop(), the images load just fine

Единственная информация, которую я смог найти по этому поводу, была эта проблема на GitHub об этом - хотя проблема говорит, что она была закрыта в v2.4, некоторые люди прокомментировали, что они испытывают это в v2.5. (Я тоже использую v2.5)

РЕДАКТИРОВАТЬ: Вот что я использую сейчас, в соответствии с предложением Анджелы:

ImageView iv = new ImageView(getContext());
RelativeLayout.LayoutParams centerParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(350));
centerParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
iv.setLayoutParams(centerParams);
iv.setAdjustViewBounds(true);                                    
iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Picasso.with(getContext()).load(path).fit().into(iv);

Изображения теперь отображаются, но они не масштабируются должным образом, соотношение сторон изменяется как-то. Любые идеи о том, как сохранить соотношение сторон, в то же время позволяя Пикассо измерять .fit()?

2 ответа

Я также столкнулся с этой проблемой. Вот что я сделал...

            Picasso
                    .with(context)
                    .load(path)
                    .fit()
                    .into(iv);

В файле xml попробуйте включить scaleType, AdjustViewBounds и layout_gravity, например:

<ImageView
                android:id="@+id/img_movie"
                android:layout_width="match_parent"
                android:layout_height="350dp"
                android:scaleType="fitXY"
                android:adjustViewBounds="true"
                android:layout_gravity="center"
                />

Надеюсь это поможет!:)

Использование

Picasso.with(getContext()).load(path).fit().centerInside().into(iv);

или же

Picasso.with(getContext()).load(path).fit().centerCrop().into(iv);
Другие вопросы по тегам