可变高度的横向滚动RecyclerView

8
我有一个水平方向的RecyclerView作为ConstraintLayout的直接子项。Recycler与父容器的宽度匹配,并根据项视图的高度设置其高度。问题在于,Recycler不能根据项视图的高度增加或减少其高度。
例如,屏幕开头有3个可见项,具有相似的100dp高度。接下来,我滚动-并看到高度为200dp的项。它将部分适合100dp窗口,用户将无法看到所有内容。
是否有人遇到过这个问题?

你找到解决问题的方法了吗?我现在也处于同样的困境。 - saintjab
问题出在ConstraintLayout上。我不知道确切的原因,但我刚刚使用RelativeLayout重新创建了整个布局,而所有的工作都很好。 - Евгений Кравцов
你的情况不同。我在我的布局中没有ConstraintLayout,所以我确定它与那个无关。我的布局由两个RecyclerView(RV)组成,嵌套在NestedScrollView中。我不确定这是否会导致问题,但最终我使用了ViewPager。如果我得到更好的解决方案,我会回来使用RV,但现在,我会坚持使用ViewPager布局。感谢分享你的解决方案。 - saintjab
1个回答

15
也许你应该在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();
        }
    });

哇,这非常有帮助。虽然回答有点老了。:D谢谢兄弟 - Hein Htet Aung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接