//变换底部占满 footview @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); RecyclerView.LayoutManager manager = recyclerView.getLayoutManager(); if (manager instanceof GridLayoutManager) { final GridLayoutManager g = (GridLayoutManager) manager; g.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return TYPE_FOOTER == getItemViewType(position) ? g.getSpanCount() : 1; } }); } }
重写onAttachedToRecyclerView这个方法因为是GridLayoutManager 通过设置SpanSizeLookup,对其getSpanSize方法,返回值设置为layoutManager.getSpanCount();实现占满行
// 解决StaggeredGridLayoutManager占满一行 @Override public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { super.onViewAttachedToWindow(holder); int index = holder.getLayoutPosition(); if (index == 0){ ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams(); if (lp != null && lp instanceof StaggeredGridLayoutManager.LayoutParams) { StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp; p.setFullSpan(true); } } }因为StaggeredGridLayoutManager 没有 SpanSizeLookup对其getSpanSize方法,所以重写onViewAttachedToWindow的方法实现。