Android中recycle高度的计算

  1. recyclerView.setLayoutManager(new GridLayoutManager(activity, 3) {  
  2.                 @Override  
  3.                 public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {  
  4.                     super.onMeasure(recycler, state, widthSpec, heightSpec);  
  5.                     int measuredWidth = recyclerView.getMeasuredWidth();  
  6.                     int measuredHeight = recyclerView.getMeasuredHeight();  
  7.                     int myMeasureHeight = 0;  
  8.                     int count = state.getItemCount();  
  9.                     for (int i = 0; i < count; i++) {  
  10.                         View view = recycler.getViewForPosition(i);  
  11.                         if (view != null) {  
  12.                             if (myMeasureHeight < measuredHeight && i % 3 == 0) {  
  13.                                 RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();  
  14.                                 int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec,  
  15.                                         getPaddingLeft() + getPaddingRight(), p.width);  
  16.                                 int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec,  
  17.                                         getPaddingTop() + getPaddingBottom(), p.height);  
  18.                                 view.measure(childWidthSpec, childHeightSpec);  
  19.                                 myMeasureHeight += view.getMeasuredHeight() + p.bottomMargin + p.topMargin;  
  20.                             }  
  21.                             recycler.recycleView(view);  
  22.                         }  
  23.                     }  
  24. //                    Log.i("Height", "" + Math.min(measuredHeight, myMeasureHeight));  
  25.                     setMeasuredDimension(measuredWidth, Math.min(measuredHeight, myMeasureHeight));  
  26.                 }  


0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值