水平RecyclerView具有可变项目高度

时间:2017-10-17 13:25:12

标签: android android-recyclerview

我在ConstraintLayout中有一个水平方向的RecyclerView作为它的直接子节点。 Recycler匹配父母的widht,并根据项目的视图高度设置其高度。问题 - Recycler无法根据项目的视图高度增加或减少其高度。

例如,屏幕开始处的3个可见项目具有类似的100dp高度。接下来,我滚动 - 并看到200 dp高度项目。它将部分冷杉100dp窗口,用户将看不到所有内容。

有没有人面对这个问题?

1 个答案:

答案 0 :(得分:0)

也许您应该使用LinearLayoutManager设置测量缓存禁用,并在滚动后请求布局。

LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
layoutManager.setMeasurementCacheEnabled(false);

YourRecyclerView.setLayoutManager(layoutManager);
YourRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            layoutManager.requestLayout();
        }
    });