android 区域交错,android - 如何在交错网格布局管理器中确定列位置 - SO中文参考 - www.soinside.com...

所以我能够使用的一个解决方案是使用项目装饰器,但这绝对有点怪异/ hack怪的感觉。

基本上,您将根据列的位置(或类似内容)调整项目的外部矩形。我的理解是,外部矩形或多或少是您要更改的间距。尝试一下下面的代码,显然,您需要进行自己的调整和逻辑以“计算”该项目在哪一列上,但这应该足以弄清楚它,希望:recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {

public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {

int left = outRect.left;

int right = outRect.right;

int top = outRect.top;

int bottom = outRect.bottom;

int idx = parent.getChildPosition(view);

int perRow = gridLayoutManager.getSpanCount();

int adj = blahh... // some adjustment

if (idx < itemsPerRow) {

// on first row, adjust top if needed

}

if(idx % perRow == 0){

// on first column, adjust. Left magically adjusts bottom, so adjust it too...

left += adj;

bottom -= adj;

}

if(idx % itemsPerRow == perRow - 1){

// on last column, adjust. Right magically adjusts bottom, so adjust it too...

right += adjustment;

bottom -= adjustment;

}

outRect.set(left, top, right, bottom);

}

});

同样,这很骇人,需要经过反复试验才能正确。

我尝试成功的另一种解决方案是为不同的列定义不同的视图。在您的情况下,各列的左右两边将具有不同的负边距视图,以获得所需的效果。

作为旁注,我假设您正在卡片视图上使用高程。我注意到的一件事是,如果名片视图没有高程,而是您自己来处理(是的,我知道,这不是您自己不处理高程的要点),这种困难大部分消失了,事情开始发生,可能是由于高程/阴影计算所致。但是无论如何...希望这至少对您有所帮助...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值