2016-09-07 2 views
0

Я хочу вставить изображение в ImageView, который используется в качестве фона. Этот фон находится в RecyclerView. Когда он загружается в первый раз, это выглядит следующим образом:Picasso centerCrop and fit получить разные результаты

enter image description here

Но когда я прокручиваю к другому элементу и прокручивать назад, это выглядит следующим образом (она должна всегда выглядеть):

enter image description here

Здесь я добавить изображение:

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

И это само изображение:

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

В чем проблема?

EDIT: весь XML (. Это не показывает весь код Здесь также 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

показать больше XML, может быть, проблема. ваш 'ImageView', вероятно, должен иметь разную ширину и высоту – snachmsm

+0

@snachmsm Я обновил его. – user6586661

ответ

1

попытаться установить android:layout_height="150dp" для вашего CardView (не используйте px!). Его ребенок FrameLayout is noecesarry (CardView распространяется FrameLayout и устанавливает одинаковые атрибуты), удалите его.

Это не так хорошо написано, все ваши View s имеют match_parent набор для высоты, кроме изображения и текст мнения ... Ваш вопрос, вероятно, пытаясь соответствовать RecyclerView высоты в этом случае («весь экран») и измеряется без изображение в первый раз (загрузка Picasso async, установка изображения, когда представление уже измерено). Но когда вы снова надуваете свой View (прокручиваете и перерабатываете), новый элемент списка будет измеряться по-разному, потому что Picasso будет вставлять ваше изображение «во время выполнения», нет необходимости асинхронной выборки (кеш)

Смежные вопросы