我正在尝试使用GridLayoutManager
在RecyclerView
中的最后一个元素行下面添加间距。为此,我使用了自定义的itemderection
并在其最后一个元素时进行底部填充,如下所示:
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
private int space;
private int bottomSpace = 0;
public SpaceItemDecoration(int space, int bottomSpace) {
this.space = space;
this.bottomSpace = bottomSpace;
}
public SpaceItemDecoration(int space) {
this.space = space;
this.bottomSpace = 0;
}
@Override
public void getItemOffsets(Rect outRect, View view,
RecyclerView parent, RecyclerView.State state) {
int childCount = parent.getChildCount();
final int itemPosition = parent.getChildAdapterPosition(view);
final int itemCount = state.getItemCount();
outRect.left = space;
outRect.right = space;
outRect.bottom = space;
outRect.top = space;
if (itemCount > 0 && itemPosition == itemCount - 1) {
outRect.bottom = bottomSpace;
}
}
}
这将对LinearLayoutManager
正确工作。只是在GridLayoutManager
的情况下,它是有问题的。
如果底部有fab
并且需要最后一行中的项目滚动到fab
上方,以便它们可见,那么它非常有用。
这个问题的解决方案在于覆盖GridLayoutManager的SpanSizeLookup。
您必须对活动或片段中的GridlayoutManager进行更改,在这些活动或片段中您正在膨胀RecyLerView。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//your code
recyclerView.addItemDecoration(new PhotoGridMarginDecoration(context));
// SPAN_COUNT is the number of columns in the Grid View
GridLayoutManager gridLayoutManager = new GridLayoutManager(context, SPAN_COUNT);
// With the help of this method you can set span for every type of view
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (list.get(position).getType() == TYPE_HEADER) {
// Will consume the whole width
return gridLayoutManager.getSpanCount();
} else if (list.get(position).getType() == TYPE_CONTENT) {
// will consume only one part of the SPAN_COUNT
return 1;
} else if(list.get(position).getType() == TYPE_FOOTER) {
// Will consume the whole width
// Will take care of spaces to be left,
// if the number of views in a row is not equal to 4
return gridLayoutManager.getSpanCount();
}
return gridLayoutManager.getSpanCount();
}
});
recyclerView.setLayoutManager(gridLayoutManager);
}
我需要添加具有复杂项目背景的ListView:顶部和底部的偶数/奇数和圆角不同。它看起来像这样: 我已经通过level-list实现了所有这些东西,但是还有一件事我想做。现在底部项目靠近屏幕底部。最好添加一些空间。 我不想向 ListView 添加下边距,我只需要最后一项的边距。 我认为这样做的方法是: 一种黑客行为——在ListView中添加带有空文本视图的页脚。但是页脚是相当不稳定的东西,它们
问题内容: 下面有一个for循环代码。我通过调用一个自定义显示函数发现aBook arrayList对象仅添加了最后一个类对象三次。为什么会这样呢? 这是我的LiFiAddressBook类 } 问题答案: 由于使用static关键字,每次 调用构造函数时,旧值都会被新值覆盖,并且在打印列表中的元素时,LiFiAddressBook类的对象变量将指向相同的对象。因此打印相似的对象。 需要明确的是,
我成功地做到了这一点,但是以一种非常规的方式。在我的recyclerView适配器中,我对第一个元素使用了一个不同的viewHolder,一个更大的元素。这将是一个很好的解决方案,但第二个元素将低于第一个元素。所以我做了一个技巧,给recyclerView一个与第一个元素相同的固定高度,这样第一个元素和第二个元素就会重叠,我只需要让第二个元素的可见性消失。 但我并不特别喜欢这种方法。有人有更好的主
问题内容: 我打算开发一个可在内显示一些动态数据的应用程序。所以我决定 在main中添加一个 。这是我的应用程序代码: 我的主要活动: 它是布局文件: 在这个recyclerView内部还有另一个: 他们的适配器Main(RAdapter): 和第二个适配器: 我的问题是:正如您在CAdapter中看到的那样,仅显示构造函数的Log消息。 更新:如果有另一种方法可以在另一张动态卡中显示某些动态
有人能帮忙吗?我正在尝试获取代表动态生成的智能卡(例如633597015500042010)的按钮的最后一个xpath元素,然后单击它。我尝试了以下方法,但仍然找不到解决方法。我打算捕获的按钮的名称是“Select”。 driver.findElement(by.xpath(“//div[@class='select-item']/div)[last()]”).click();
额外的问题:我如何得到插值的结果,其中确切的时间戳的值是线性插值之间的两个周围的值?