android– 如何确定交错网格布局管理器中的列位置

android– 如何确定交错网格布局管理器中的列位置,第1张

概述我正在使用交错的回收站视图布局来获取照片列表.我希望两侧的间距为零,同时两列之间仍有空间.我正在使用项目装饰子类来获取附加照片中看到的间距.我知道我可以控制左右间距,但问题是我从来不知道照片所在的列.看起来交错的布局管理器会进行一些自己的重新排序.我尝试过使用getChil

我正在使用交错的回收站视图布局来获取照片列表.我希望两侧的间距为零,同时两列之间仍有空间.我正在使用项目装饰子类来获取附加照片中看到的间距.我知道我可以控制左右间距,但问题是我从来不知道照片所在的列.看起来交错的布局管理器会进行一些自己的重新排序.我尝试过使用getChildAdapterposition,但它似乎返回数据源数组中的位置,而不是布局中照片的实际位置.知道我应该如何处理这个问题吗?


解决方法:

我设法让它运作起来.所以在我的情况下,我不需要在屏幕的左右边缘上有任何边框.我只需要中间和底部的边框.解决方案是获取StaggeredGrIDLayoutManager.LayoutParams类型的视图的布局参数.在这些参数中,您可以获取spanIndex,它告诉您视图的索引.因此,如果spanCount为2,则左视图的spanIndex为0,右视图的spanIndex为1.

这是我的代码所以它可能对你有所帮助

public class SpaceItemdecoration extends RecyclerVIEw.Itemdecoration {private int space;public SpaceItemdecoration(int space) {    this.space = space;}@OverrIDepublic voID getItemOffsets(Rect outRect, VIEw vIEw, RecyclerVIEw parent, RecyclerVIEw.State state) {    int position = parent.getChildAdapterposition(vIEw);    StaggeredGrIDLayoutManager.LayoutParams lp = (StaggeredGrIDLayoutManager.LayoutParams)vIEw .getLayoutParams();    int spanIndex = lp.getSpanIndex();    if(position > 0){        if(spanIndex == 1){            outRect.left = space;        } else{            outRect.right = space;        }        outRect.bottom = space * 2;    }}

}

在我的情况下,首先我必须得到位置,因为在索引0我有一个没有任何边框的标题视图.之后我得到了span索引,并根据它设置了我在该视图上需要的边框.最后,我在每个视图上设置了底部边框.

总结

以上是内存溢出为你收集整理的android – 如何确定交错网格布局管理器中的列位置全部内容,希望文章能够帮你解决android – 如何确定交错网格布局管理器中的列位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1098273.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存