user6586661
user6586661

Reputation: 552

Picasso centerCrop and fit get different results

I want to insert an image to an ImageView, which gets used as a background. This background is in a RecyclerView. When it gets loaded the first time, it looks like this:

enter image description here

But when I scroll to another item and scroll back, it looks like this (it should always look like this):

enter image description here

Here i add the image:

 public void onBindViewHolder(StoryViewHolder holder, int position) {
    holder.cardView.setMinimumHeight(height/3);
    holder.layout.setMinimumHeight((int) ((float) width / 4));
    //set image

    Picasso.with(activity).load(MainPostAdapter.URL + 140 + ".png").
            transform(new BlurTransform(holder.background.getContext())).fit().centerCrop().into(holder.background);
    holder.background.setAlpha(0.25f);
}

And this is the image itself:

<ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/story_view_background"/>

What could the problem be?

EDIT: whole XML (It doesn't show all of the code. Here is also pastebin:http://pastebin.com/8rJvSx7V):

 <?xml version="1.0" encoding="utf-8"?>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/story_view_background"/>
    <RelativeLayout
        android:id="@+id/story_view_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="50px">
        <ImageView
            android:id="@+id/story_view_image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/story_view_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="13sp"
            android:layout_below="@+id/story_view_image"
            android:paddingBottom="8dp"
            android:paddingTop="8dp"
            android:gravity="center_horizontal"
            android:layout_alignParentBottom="true"/>
    </RelativeLayout>
</FrameLayout>

Upvotes: 0

Views: 67

Answers (1)

snachmsm
snachmsm

Reputation: 19263

try to set android:layout_height="150dp" for your CardView (don't use px!). Its child FrameLayout is unnecesarry (CardView is extending FrameLayout and have set same attributes set), remove it.

It's not so well written, all your Views have match_parent set for height, besides Image and Text views... Your item is probably trying to fit RecyclerView height in this case ("whole screen") and is measured without image at first time (Picasso async downloading, setting image when view is already measured). But when you inflate your View again (scroll and recycle) new list item will be measured differently, because Picasso will insert your image "in runtime", no need to async fetching (cache)

Upvotes: 1

Related Questions