如何向回收器视图的所有单元格添加填充

时间:2019-12-02 14:51:34

标签: android android-recyclerview

我需要在回收者视图中为每个单元格添加填充(而不是边距)。此回收程序视图的元素在我的整个应用程序中都使用过,因此我不想直接将填充添加到XML。

我了解我们可以使用装饰器为回收站视图的子级添加边距,但是添加填充的最佳方法是什么?装饰器存在的问题是,使用装饰单元时,单元的背景色不会延伸到回收器视图的边缘。

有没有办法做到这一点,还是应该为每种单元格类型复制XML以添加填充?

3 个答案:

答案 0 :(得分:1)

我在Google和Android文档中进行搜索,发现此link转到了链接,该链接使用RecyclerView.ItemDecoration而不是空白地填充了回收视图的项目。而是删除mPadding值或Assign = 0,然后添加此代码view.setPadding(5,5,5,5);

@Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        view.setPadding(5,5,5,5); // add left, top, right, bottom 5px
        final int itemPosition = parent.getChildAdapterPosition(view);
        if (itemPosition == RecyclerView.NO_POSITION) {
            return;
        }

然后在mainActivity中调用该类

recyclerView.addItemDecoration(ListPaddingDecoration(this))

答案 1 :(得分:0)

我希望我理解您不想在主XML文件中添加填充,因为要实现此目的,您只需在项目XML中添加填充即可。

当您将填充添加到与该项目相关的XML文件中时,所有项目都具有该填充。

因此,如果我们必须使用XML,那么对于主要活动(其中显示学校的所有课程),将有一个class_item.xml

 <TextView
        android:id="@+id/classname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_orange_light"
        android:padding="8dp"
        android:text="Class name"
        tools:ignore="HardcodedText" />

答案 2 :(得分:0)

如果我对您的理解很好,那么您想(以编程方式)在代码中设置填充。您可以通过在回收站项目的根视图上使用方法来做到这一点:setPadding(int左侧,int顶部,int右侧,int底部)