当前位置: 首页 > 知识库问答 >
问题:

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

孟和玉
2023-03-14

共有1个答案

费承载
2023-03-14

我设法把它弄好了。在我的情况下,我不需要在屏幕的左边缘或右边缘上有任何边框。我只需要中间和底部的边框。解决方案是获取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;
    }


    @Override
    public 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上我有一个头视图,它没有任何边框。之后,我得到跨度索引,并根据它设置视图上所需的边框。最后,我设置了每个视图的底部边框。

 类似资料:
  • 我需要Android TV的自定义键盘,就像下面图像中的这个。布局有一个带有网格布局管理器的回收器视图来自定义行和列。 但是当我运行应用程序时,布局在最后一行没有显示正确的按钮宽度。“空格”按钮的量程应为4,“移位”按钮2和“归零”按钮3。

  • 问题内容: 是否可以使用CSS选择特定的网格列或行? 例如,假设我有一个3行2列的CSS网格布局:。如何从第二列中选择所有元素?例如:(仅是我的主意,无效的代码)。 我已经尝试过在元素上使用选择器,但是当网格布局引擎自动放置项目时,这不允许我指定行或列。 问题答案: CSS无法实现。 CSS针对HTML元素,属性和属性值。 网格列和行没有这些“挂钩”。 您必须直接定位网格项目。 你写了: 例如,假

  • 我想做的是: 我正在尝试创建一个交错的网格布局,可以容纳不同宽度和高度的项目。布局会动态移动项目,使其不重叠。 我所尝试的: 我研究了使用默认的< code > StaggeredGridLayoutManager ,但它似乎只能在一个方向上工作(即垂直或水平)。此外,我遇到的每个库或教程也只处理包含动态高度或动态宽度的项目,而不是两者都包含。 有没有办法让< code > StaggeredGr

  • 每一个网格项目都有一个矩形的网格区域,这个网格区域定义了该网格项的包含块,对齐属性(justify-self 和 align-self)确定其实际位置。 网格项占用的单元格也会影响网格的行和列的大小,参看网格尺寸(Grid Sizing)。 网格区域在网格内的位置通过1个网格位置和1个网格跨度属性来定义: grid position 表示网格项在网格中的位置。该属性可以是确定的(被显式定义)或自动

  • 问题内容: 我想使我的网站使用CSS网格系统,但似乎无法正常工作。这是我的代码: 问题答案: 使用该属性时,字符串值必须具有相同的列数。 您可以使用句点或句点的不间断行来表示一个空单元格(规范参考)。 从网格规范: [7.3。 命名区域:属性] 所有字符串的列数必须相同,否则声明无效。 如果命名的网格区域跨越多个网格单元,但是这些单元不形成单个填充矩形,则声明无效。 在此模块的将来版本中,可能会允

  • 要使用自定义的布局管理器,我们可以重新实现 addItem(), sizeHint(), setGeometry(), itemAt() 和 takeAt()这些方法。为了确保当应用程序界面的空间非常小时,布局大小不会为 0,我们需要重载 minimumSize()方 法。日常中我们也经常看到这样的情形,即应用程序窗口的长和宽的尺寸是互为依存的,那 么我们就需要重载 hasHeightForWid