我尝试在我的GridLayout RecyclerView中添加水平分隔线。但出于某种原因,分割线没有出现。
作为替代方法,我使用具有 2 个参数的 addItemDecoration 方法,其中第二个参数是索引,之后添加 ItemDecoration。
RecyclerView r = (RecyclerView) findViewById(R.id.recycler_view);
r.setAdapter(new AppAdapter(this, fetchData());
r.setLayoutManager(new GridLayoutManager(this, 5));
r.addItemDecoration(new DividerItemDecoration(this, GridLayoutManager.HORIZONTAL), 2);
它强制关闭,但有以下例外:
Caused by: java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
这个尺寸意味着什么?为什么是零?
可能是因为我在活动而不是片段中使用此回收器视图吗?
P、 美国:适配器没有问题;它不是空的。
使用这种方式:
创建名为divider_shape.xml的形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="@color/primary" />
</shape>
垂直和水平方向使用DividerItemDecoration
val verticalDecorator = DividerItemDecoration(view.context, DividerItemDecoration.VERTICAL)
val horizontalDecorator = DividerItemDecoration(view.context, DividerItemDecoration.HORIZONTAL)
val drawable = ContextCompat.getDrawable(view.context, R.drawable.divider_shape)
verticalDecorator.setDrawable(drawable!!)
horizontalDecorator.setDrawable(drawable!!)
view.recyclerView.apply {
addItemDecoration(verticalDecorator)
addItemDecoration(horizontalDecorator)
layoutManager = GridLayoutManager(view.context, 2)
adapter = movieAdapter
}
这个错误是因为你告诉RecyclerView绘制你的装饰数字2,而没有告诉它绘制数字1和0。
(它被实现为一个按顺序绘制的装饰的ArrayList,它试图将索引2处的装饰插入到一个空的Array List中-因此是OutOfBounds!)
编辑:这是一个工作示例:
我已经测试了此代码,如果您进行以下更改,它可以正常工作:
1-使用方法的单参数版本,索引版本将给出超出边界的解释(您需要从0开始索引)。
r.addItemDecoration(new SpacesItemDecoration(10));
2- 使用以下项目装饰类:
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private int space;
public SpacesItemDecoration(int space) {
this.space = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.bottom = space;
}
}
这将仅在底部为您提供空间(对于水平分隔线)。
3-更改RecyclerView布局,使RecyclerView的背景色为您希望分隔条的颜色:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"> # DIVIDER COLOUR
</android.support.v7.widget.RecyclerView>
4-更改项目布局,使根项目的背景不透明,并且与RecyclizerView的颜色不同(显然)
<RelativeLayout
android:id="@+id/item_root"
android:background="#cc00cc"
android:layout_width="match_parent"
android:layout_height="wrap_content">
之前没有显示任何内容的原因可能是因为RecyclerView背景和项目背景相同,所以分隔符不可见。
此方法适用于线性和网格布局管理器。
我希望这(最后!)帮助:)
我正在为Prestashop编写一个模块,该模块覆盖AdminProductsController,并向BackOffice产品视图中的批量操作菜单中添加另外两个操作。这是我在重写类的构造中添加批量操作的代码 结果是这样的 我想在“删除选定项”和“导出选定项”之间添加分隔符。我的意思是,在我新添加的条目之前添加它。我怎样才能做到这一点?
我正在构建一个使用的Android应用程序。我想将分隔符添加到,我用下面的代码做到了这一点: 到目前为止,一切正常。然而,分隔线占据了全屏幕的大小,我想给它增加边距。有没有什么方法可以给分隔线添加边距,方法是给绘制的矩形添加一些空间,而不是创建一个带边距的自定义可绘制形状,并将其添加到< code > recycle view 中?
问题内容: 我有一个 JComboBox ,想在元素列表中有一个分隔符。如何在Java中做到这一点? 一个方便使用的示例场景是制作用于字体族选择的组合框。与Word和Excel中的font-family-selection- control类似。在这种情况下,我想在顶部显示最常用的字体,然后显示一个分隔符,最后按字母顺序显示分隔符下方的所有字体系列。 谁能帮我解决这个问题,或者在Java中是不可能
问题内容: 我对Swift还是相当陌生,在寻找一种将空间添加为千位分隔符的方法时遇到了很多麻烦。 我希望实现的是获取计算结果并将其显示在文本字段中,以便格式为: 2358 000 代替 2358000 例如。 我不确定是否应该格式化Int值,然后将其转换为String,或者在将Int值转换为String之后添加空格。任何帮助将不胜感激。 问题答案: 您可以使用NSNumberFormatter指定
我需要按、和的间隔(步长为5)对数据进行分组。对于每个组,我要估计中位数 我可以分组数据并计算的中值,但是我不知道如何添加的间隔: 正确的应该结构如下(数字可能不同,这只是数据结构的一个例子): 更新: 最终结果应该是这样的。因此,基本上,和分别是上下限:
问题内容: 我有一个包含二进制数字的字符串。如何将其分成几对数字? 假设字符串是: 我想在每2个字符后添加一个分隔符,例如“:”(即冒号)。 我希望输出为: 我怎么能在Swift中做到这一点? 问题答案: Swift 5.1•Xcode 11或更高版本 测试中