- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我没找到任何相关的帖子...
我们有旧的RecyclerView.ItemDecoration代码(取自 Suleiman's Mansonry Github project ):
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private final int mSpace;
public SpacesItemDecoration(int space) {
this.mSpace = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.left = mSpace;
outRect.right = mSpace;
outRect.bottom = mSpace;
// Add top margin only for the first item to avoid double space between items
if (parent.getChildAdapterPosition(view) == 0)
outRect.top = mSpace;
}
}
我想要一个根据当前 LayoutManager 设置 mSpace
(偏移/边距)的条件在 RecyclerView .
例如:
if(/* LayoutManager is LinearLayoutManager*/){
//Set larger margin
}else{
//Set lower margin
}
最佳答案
所以...当我重新阅读这个问题以检查是否缺少任何内容时,我意识到您实际上获得了一个 RecyclerView 引用(父级)作为 getItemOffsets() 的参数.
因此,您只需从函数内部调用 parent.getLayoutManager()
即可。
示例:
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (parent.getLayoutManager() instanceof LinearLayoutManager){
margin = 2;
}else if (parent.getLayoutManager() instanceof StaggeredGridLayoutManager){
margin = 1;
}else{
margin = 0;
}
//Do magic
}
关于java - 如何从RecyclerView的ItemDecoration类访问LayoutManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35121686/
我正在尝试为 recyclerView 中的每个 ViewHolder 创建多个垂直分隔线,但不知道如何。 这是我工作水平分隔线的代码: @Override public void onDrawOve
我写了一个小 fragment 来在 RecyclerView 的每个项目中显示一条垂直线和一个小球。但是最后一个或只有 1 个项目时永远不会被绘制。 我的装饰: public class Marke
我刚刚开始使用 ItemDecoration。我正在尝试在由 StaggeredGridLayoutManager 管理的两列 RecyclerView 中间实现分隔线。 这是我的 ItemDecor
这是我的第一个堆栈溢出问题。在过去的几个小时里,我一直在试图找到解决这个堆栈溢出问题的方法,但我找不到任何东西。 我在这里创建的应用程序(或特定 Activity )非常简单,基本上是一个包含 Tex
我为使用 GridLayoutManager 的 RecyclerView 创建了自定义 ItemDecoration。 ItemDecoration 本质上确保在 RecyclerView 中应用所
我想知道如何添加item装饰使所有item之间的间距相等,并控制每个外部空间是否有空间 所需的效果: 只留下空格和中间的相等空格: 没有边缘空间,中间有相等的空间: 最佳答案 import andro
我正在使用具有不同 viewholders 的 recyclerview(具有垂直 LinearLayout),其中一个有另一个 RecyclerView(带有水平 LL)。在第二个 recycler
我想为 Header Type 绘制一个默认的 ItemDecoration 到 RecycleView 中。但是 divider 是为每个 ViewType 显示的。 自定义装饰: class Di
我有一个带有 2 个 ItemDecorations 的 RecyclerView。我如何指定每个 ItemDecoration 的高度(z-index),以设置将绘制在另一个之上? 最佳答案 来自d
我使用这个 timehop stickyheader 库为我的 recyclerview 创建粘性 header :https://github.com/timehop/sticky-header
我正在使用 RecyclerView.ItemDecoration类在列表中创建分隔线,但我想隐藏列表中最后一项的分隔线。这是否可能无需自己实现分隔线? 最佳答案 你可以试试这个, public cl
我已经知道如何在 ItemDecoration 中绘制东西,但现在我想在 ItemDecoration 中绘制一个 View。 由于设置有点复杂,我创建了一个sample project可以重现问题。
我通过覆盖 getItemOffsets() 方法(请参阅下面的代码)使用 GridLayoutManager 为我的 RecyclerView 应用相等的边距。 但是,当一个对象从适配器中移除时,移
我有一个 RecyclerView(带有 LinearLayoutManager)和一个自定义的 RecyclerView.ItemDecoration。 比方说,我想在装饰 View 中添加按钮(出
我为 RecyclerView 编写了两个 ItemDecorator。每个都在 getItemOffsets() 中添加一些顶部偏移量。比方说: 第一个装饰器添加 20dp 顶部偏移 第二个 dec
我正在为我的 recyclerview 使用自定义项目装饰器,它工作正常。 MyItemDecorationTest.java public class MyItemDecorationTest ex
这是我的场景 我必须在回收器 View 的第一个和最后一个项目上添加空间 我正在使用 ItemDecoration recyclerView.addItemDecoration(new Recycl
我正在尝试使用ItemDecorator将一些分隔符添加到 RecyclerView 中。这是执行此操作的代码 fragment 。 //... public abstract C onInflate
我有一个像这样的简单 RecyclerView: 我在 Fragment 的 onCreate() 方法中添加分隔符: mRv = (RecyclerView) view.findVie
我正在我的应用程序中创建一个显示多个用户之间对话的消息传递功能。对于用户拥有的消息,我希望头像图像右对齐,而对于其他消息,我希望头像左对齐。 为了实现这一点,我在 framelayout 和 onBi
我是一名优秀的程序员,十分优秀!