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

RecyclView项目装饰与RecyclView项目之间的行间距

严峰
2023-03-14

因此,在我的have中,我有回收视图,我想要我的再循环视图项目之间的间隔,所以这里我有两个选项

    < li >我可以子类化< code > RecyclerView。ItemDecoration < li >我可以将< code >边距添加到项目本身

Cleary第二个选项很简单,使用该选项我得到了想要的结果,但在网上我看到人们使用ItemDecoration并推荐它。

我想知道使用< code>ItemDecoration是否有一些优势,即使我的用例非常简单,比如在项目之间添加间距?< br > < code > item decoration 会提供性能优势或其他优势吗?

共有2个答案

谭景明
2023-03-14

使用项装饰

>

  • 易于实现,只是 recyclerView.addItemDecoration(DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL))

    这是很自然的,它只会增加项目之间的间隙,这意味着您不会在第一个项目的顶部或最后一个项目的底部看到它。

    您可以通过以下方式自定义分隔符:

     val dividerDrawable = getDrawable(context, R.drawable.divider)
    
     itemDecoration.setDrawable(dividerDrawable)
    

    在项目视图布局上使用< code >边距:

      < li >也很容易实现,但它有一些明显的缺点:它会出现在第一个项目的顶部和最后一个项目的底部。除非你写更多的代码(逻辑)来处理。

  • 丁绪
    2023-03-14

    您在各种资源中读到的确实是真的。使用ItemDecoration要干净得多,并且代码在某种意义上是可重用的。

    这消除了我们在UI中为item_layout手动调整边距的需要,即使最上面和最下面的项目也包含边距问题。

    使用ItemDecoration,我们可以创建一个单独的类(参见下面的示例)来添加偏移量(又名。边距),它将自动在RecyclView项目之间添加所需的行间距:

    class MarginItemDecoration(private val spaceSize: Int) : RecyclerView.ItemDecoration() {
        override fun getItemOffsets(
            outRect: Rect, view: View,
            parent: RecyclerView, 
            state: RecyclerView.State
        ) {
            with(outRect) {
                if (parent.getChildAdapterPosition(view) == 0) {
                    top = spaceSize
                }
                left = spaceSize
                right = spaceSize
                bottom = spaceSize
            }
        }
    }
    

    感谢@cmorigaki提供了上述示例。

     类似资料:
    • 我无法打开recyclerview项目中的片段。当我点击项目中的按钮时,我得到了一条错误消息:对空对象引用的onEditClick(com.example.taskapprealm.edit.EditFragment)“。Null位于适配器内部。 活动中的方法: 和适配器中的onBindViewHolder: 接口: 日志:

    • 下面是我如何为RecyclerView项目设置间距。它被设计用于网格和列表。间隔很有效。 我搞不懂的是如何插入分隔线。如有任何帮助,我们将不胜感激。 旁注:如果你有比我现在做的更好的方法来实现间距,我会非常感激:) 下面是我想要做的一个快速视觉效果: 以下是我所知道的: 这是我想要的:

    • 你可以在同一个构建里加入项目之间的依赖, 举个例子, 一个项目的 JAR 文件被用来编译另外一个项目. 在 api 构建文件里我们将加入一个由 shared 项目产生的 JAR 文件的依赖. 由于这个依赖, Gradle 将确保 shared 项目总是在 api 之前被构建. Example 7.13. 多项目构建 - 项目之间的依赖 api/build.gradle dependencies {

    • 在我的Android应用程序中,我使用通过使用在网格中显示项目。在GridView中,为了指定元素之间的间距,我将设置HorizonalSpacing和verticalSpacing属性。 那么,如何在上执行同样的操作呢?

    • 为了方便中大型公司维护过多的项目,从 MinDoc v2.0 开始支持项目空间功能。 默认情况下,MinDoc 内置了一个默认的项目空间,创建项目时默认归属到该空间下。超级管理员可在后台维护项目空间: 用户创建项目时,可选择已存在的项目空间: 可在导航项目空间中查看所有项目空间: 注意 这里显示的项目数量时当前项目空间下所有的项目,点击后显示的项目时你有权限看到的。和实际项目数量不一定一致。

    • 对于我的新JAVA应用程序,我希望开始使用IntelliJ创建一个新的JSF2.2项目。该项目将是一个web应用程序,并将使用Maven。