android - 具有可变项目高度的水平 RecyclerView

标签 android android-recyclerview

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

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

有人遇到过这个问题吗?

最佳答案

也许您应该使用 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();
        }
    });

关于android - 具有可变项目高度的水平 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46791312/

相关文章:

java - Android - 尝试每 3-5 秒更改一次弹跳球的颜色?

java - 无法打开安卓工作室。 (JDK相关问题)

android - 显示某种帮助 'overlay'

android - RecyclerView 网格布局管理器 : span count is defaulted to 1

android - 如何强制 PopupMenu 与 anchor 重叠?

android - RecyclerView 内的 CardView 有额外的边距

android - 致命的 : [Errno 13] Permission denied when repo init android source 4. 1

android - com.google.android.gms.internal.zzhu : can't find referenced class android. security.NetworkSecurityPolicy

java - Recyclerview 不在嵌套的 ScrollView 内滚动

android - 评级栏在回收站 View 中为 0