我需要在回收者视图中为每个单元格添加填充(而不是边距)。此回收程序视图的元素在我的整个应用程序中都使用过,因此我不想直接将填充添加到XML。
我了解我们可以使用装饰器为回收站视图的子级添加边距,但是添加填充的最佳方法是什么?装饰器存在的问题是,使用装饰单元时,单元的背景色不会延伸到回收器视图的边缘。
有没有办法做到这一点,还是应该为每种单元格类型复制XML以添加填充?
答案 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底部)