2015-04-07 77 views
1

我使用RecyclerView並且想要在水平列表中呈現圖像。主要的問題是,我想的圖像縮放到RecyclerView同時裝載的高度,看到http://developer.android.com/training/displaying-bitmaps/load-bitmap.htmlAndroid RecyclerView - in Adapter set ImageView height

parentonCreateViewHolder(在RecyclerView)報告不正確的getMeasuredHeight。它太大了(完整的屏幕高度?)。我在我的片段的onResume方法中添加AdapterRecyclerView

如何獲得我的RecyclerView的高度,該高度爲當前屏幕高度的2/3(可能隨新佈局文件而改變)?

編輯:看來,parent高度是正確的。

+0

recyclerView.getHeight()訪問您ViewHolder什麼時候? –

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

    } 

然後在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