根据项目位置动态更改 StaggeredGridLayout 的列跨度计数

Mua*_*yib 4 java android recyclerview-layout staggeredgridlayoutmanager

我想为 (n) 项列表实现此布局: 这个布局

到目前为止,我可以在两列中显示项目,但是如何将特定位置的两列合并为一列(即第 7 项)?

我已经尝试过 SO 提供的许多解决方案以及其他解决方案,但没有一个对我有用。那里提供的解决方案要么使用 LinearLayout 膨胀静态布局,要么提供列中分区的解决方案。

我也尝试过使用setSpanLookup方法但没有运气..

Mua*_*yib 5

经过一番苦苦挣扎,终于找到了对我有用的解决方案:

    @Override
        public void onViewAttachedToWindow(MyViewHolder holder) {
            super.onViewAttachedToWindow(holder);
            ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
            if(lp != null
                    && lp instanceof StaggeredGridLayoutManager.LayoutParams
                    && (holder.getLayoutPosition() == 6 || holder.getLayoutPosition() == 13)) {
                StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;
                p.setFullSpan(true);
            }
           holder.setIsRecyclable(false);
        }
Run Code Online (Sandbox Code Playgroud)

希望这对你也有帮助。