2016-09-07 3 views
0

Ich möchte ein Bild in ein ImageView einfügen, das als Hintergrund verwendet wird. Dieser Hintergrund ist in einer RecyclerView. Wenn es das erste Mal geladen wird, sieht es wie folgt aus:Picasso centerCrop und fit erhalten unterschiedliche Ergebnisse

enter image description here

Aber wenn ich zu einem anderen Element scrollen und blättern zurück, sieht es wie folgt aus (es sollte immer so aussehen):

enter image description here

Hier füge ich das Bild:

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

Und das ist das Bild selbst:

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

Was könnte das Problem sein?

EDIT: ganze XML (. Es ist nicht der gesamte Code zeigen Hier ist auch 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> 

+0

zeigen mehr XMLs, könnte die sein Problem. Ihr 'ImageView' sollte wahrscheinlich eine andere Breite und Höhe haben – snachmsm

+0

@snachmsm Ich habe es aktualisiert. – user6586661

Antwort

1

versuchen zu setzen android:layout_height="150dp" für Ihre CardView (verwenden Sie nicht px!). Sein Kind FrameLayout ist unnötigerweise (CardView erweitert FrameLayout und haben dieselben Attribute eingestellt gesetzt), entfernen Sie es.

Es ist nicht so gut geschrieben, alle View s haben match_parent Set für Höhe, neben Bild und Text Ansichten ... Ihr Artikel wahrscheinlich RecyclerView Höhe in diesem Fall („whole screen“) und wird gemessen zu passen versucht, ohne Bild beim ersten Mal (Picasso async herunterladen, Bild einstellen, wenn die Ansicht bereits gemessen wurde). Aber wenn Sie Ihre View wieder aufblasen (scrollen und recyceln) neue Listenelement wird anders gemessen, weil Picasso wird Ihr Bild "in Laufzeit", keine Notwendigkeit, asynchronen Abruf (Cache)

Verwandte Themen