当前位置:首页 > PHP教程 > php应用 > 列表

php短视频源码之瀑布流分割线左右间距问题及解决代码

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-13 11:32:52 浏览: 评论:0 

这篇文章给大家介绍php短视频源码,瀑布流分割线左右间距问题解决的相关代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧。

下面展示一下非瀑布流的item布局情况,每个item的高度都是一样的,所以

他的index就是左右左右,position所对应的itemView就是准确的,

左0,右1,左2,右3,以此类推…

这时候我们可以用下面代码即可成功设置分割线。

  1. /** 
  2.  
  3. * 第一列设置左边距为space,右边距为space/2 (第二列反之) 
  4.  
  5. */ 
  6.  
  7. if (parent.getChildLayoutPosition(view) % 2 == 0) { 
  8.  
  9. outRect.left = space; 
  10.  
  11. outRect.right = space / 2; 
  12.  
  13. else { 
  14.  
  15. outRect.left = space / 2; 
  16.  
  17. outRect.right = space; 
  18.  

瀑布流的position是根据列的高度哪个小而来加载下一个position在哪里,

上面瀑布流图我们可以看到,左0,右1 之后,2到右边了,那是因为第二列的高度小于第一列的高度,所以就加载到第二列,以此类推,下面的高度可以说就是随机展示的,谁也不知道接下来要怎么判断分割线,所以用上面的那些代码是行不通的,大招来了,我们可以通过StaggeredGridLayoutManager.LayoutParams里的getSpanIndex()来判断,这个方法不管你高度怎样,他都是左右左右开始排列的,如下代码。

  1. StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams(); 
  2. /** 
  3. * 根据params.getSpanIndex()来判断左右边确定分割线 
  4. * 第一列设置左边距为space,右边距为space/2 (第二列反之) 
  5.  
  6. */ 
  7.  
  8. if (params.getSpanIndex() % 2 == 0) { 
  9.  
  10. outRect.left = space; 
  11.  
  12. outRect.right = space / 2; 
  13.  
  14. else { 
  15.  
  16. outRect.left = space / 2; 
  17.  
  18. outRect.right = space; 
  19.  
  20. }

Tags: php短视频源码

分享到: