3

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

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

EDIT: Вот что я использую в настоящее время, согласно предложению Анжелы:

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); 

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

ответ

3

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

  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" 
       /> 

Надеется, что это помогает! :)

+0

Спасибо! :) Загрузка изображений сейчас, но я не могу правильно их масштабировать, соотношение сторон продолжает изменяться - обновленный код выше. – weirdo16

+0

не работает для меня. –

1

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

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

или

Picasso.with(getContext()).load(path).fit().centerCrop().into(iv); 
Смежные вопросы