遇到的情况:
RecyclerView和RecyclerView上面的部件需要保持一点距离,但是给RecyclerView设置padding后发现item滚动时,padding部分不随之一起滚动。
目前想到的有三种
1.禁用RecyclerView滚动,再嵌套一个NestedScrollView(未测试)
2.给RecyclerView设置头部(测试可以,需要在合适的时机添加比较美观)
3.利用addItemDecoration()方法,添加分割线。(建议该方法)
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.support.v7.widget.RecyclerView;
import android.view.View;
/**
* Created by leiel on 2018/3/9 0009.
*/
public class SimpleDividerDecoration extends RecyclerView.ItemDecoration {
private int dividerHeight;
private Paint dividerPaint;
public SimpleDividerDecoration(Context context) {
dividerPaint = new Paint();
dividerPaint.setColor(context.getResources().getColor(R.color.bg_gray));
dividerHeight = context.getResources().getDimensionPixelSize(R.dimen.m1);
}
private int isF = 1;
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
int childCount = parent.getChildCount();
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
for (int i = 0; i < childCount - 1; i++) {
View view = parent.getChildAt(i);
float top = view.getTop();
float bottom = view.getTop() + dividerHeight;
if (i == 0) {
if (isF == 1) {
view.setPadding(view.getPaddingLeft(), view.getPaddingTop() + 10,
view.getPaddingRight(), view.getPaddingBottom());
isF = 0;
}
c.drawRect(left, top, right, bottom + 10, dividerPaint);
} else
c.drawRect(left, top, right, bottom, dividerPaint);
}
}
}
复制代码
参考链接:https://www.jianshu.com/p/b46a4ff7c10a(翻译)