2015-04-07 2 views
1

Я использую RecyclerView и хочу отображать изображения в горизонтальном списке. Основная проблема в том, что я хочу, чтобы масштабировать изображение до высоты RecyclerView при загрузке, как видно http://developer.android.com/training/displaying-bitmaps/load-bitmap.htmlAndroid RecyclerView - в наборе адаптеров ImageView height

parent (RecyclerView) в onCreateViewHolder сообщает некорректное getMeasuredHeight. Он слишком большой (полная высота экрана?). Я добавляю Adapter в методе onResume моего фрагмента к RecyclerView.

Как получить высоту моего RecyclerView, который имеет текущие 2/3 высоты экрана (может измениться с помощью нового макета-файла)?

Редактировать: Кажется, что высота parent верна.

+0

recyclerView.getHeight()? –

+0

rV.getHeight (и parent.getHeight) всегда 0. - Возможно, я следую неправильному пути, но как я могу это сделать? – mars3142

+0

попробуйте использовать вместо этого LayoutManager и вызовите .getHeight() на этом ... –

ответ

0

Вы можете использовать OnPreDrawListener. В слушателе вы можете получить измеренную высоту RecyclerView и запустить загрузку.

0

Вот что вы можете сделать:

public class MyViewHolder extends RecyclerView.ViewHolder{ 

    ImageView mImageView; 
    int imageHeight; 
    public MyViewHolder(View view){ 
     super(view); 

     mImageView = (ImageView) view.findViewById(R.id.imageView); 

     // set the imageHeight from the ImageView 
     imageHeight = mImageView.getHeight(); 
    } 

    // Create this public method 
    public int getImageHeight(){ 
     return imageHeight; 
    } 

    } 

тогда, когда доступ к вашей ViewHolder в onBindViewHolder

@Override 
public void onBindViewHolder(MyViewHolder row, int position) { 

    //.... Get the ImageView height 
    int imageHeight = row.getImageHeight(); 
} 
+0

Это означает, что я задал высоту в макете моего элемента «RecyclerView», чего я не могу. :( – mars3142

+0

@ mars3142 где вы устанавливаете высоту изображения? –

+0

Я могу установить высоту в 'onBindViewHolder'. Я вызываю ** holder.image.setImageBitmap (loadScaledImage (Uri, RecyclerView.height)) **. И при этом Мне нужна высота «RecyclerView», для масштабирования изображения. – mars3142

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