RecyclerView GridLayoutManager第一行比其他行更高

时间:2016-01-17 21:21:31

标签: android android-recyclerview

我使用简单的RecyclerView - GridLayoutManager,第一行比其他行更大。

这是RecyclerView的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/single_gallery_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        android:layout_marginTop="50dp"/>

</RelativeLayout>

以下是gridLayoutManager

的创建
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mParentView = inflater.inflate(R.layout.fra_gallery_single, null);

    mRecyclerView = (RecyclerView) mParentView.findViewById(R.id.single_gallery_list);

    mAdapter = new SingleGalleryAdapter(getActivity(), ((MainActivity)getActivity()).getSelectedGalleryData().getPhotos());

    mRecyclerView.setAdapter(mAdapter);
    mRecyclerView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.main_background_color));
    mRecyclerView.addItemDecoration(new AppItemDecorator(3, 7));

    mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3));

    return mParentView;
}

以下是我的项目布局的样子:     

    <ImageView
        android:id="@+id/single_item_img"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/img_gallery_1"/>

</LinearLayout>

我有非常简单的适配器。 这是我的屏幕的样子:

enter image description here

为什么我的第一行比其他行更大?

1 个答案:

答案 0 :(得分:0)

我发现了为什么会发生这种情况:

我以这种方式为每件商品加载所需的数据:

这是我的信息对象。

public class PhotoItemData {

@Attribute
private String url;

public int getDrawableId(Context context){
    return context.getResources().getIdentifier(url, "drawable", context.getPackageName());
}
}

这是我的适配器代码,我在其中获取每个项目的数据

   @Override
    public void onBindViewHolder(SingleGalleryViewHolder holder, int position) {
        PhotoItemData photoItemData = mData.get(position);

 holder.singleItemImg.setImageDrawable(ContextCompat.getDrawable(mContext, photoItemData.getDrawableId(mContext)));
}

每次我的第一张照片都比其他照片更大。 我应该找到一种方法来加载适当大小的第一张图片。

如果我改变这样的代码:

holder.singleItemImg.setImageDrawable(ContextCompat.getDrawable(mContext, R.drawable.thumb_gallery_3));

工作正常。