1 自定义分割线
public class ListViewDecoration extends RecyclerView.ItemDecoration {
private Drawable mDrawable;
public ListViewDecoration() {
mDrawable = ResCompat.getDrawable(App.getInstance(), R.drawable.divider_recycler);
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
final int left = parent.getPaddingLeft();
final int right = parent.getWidth() - parent.getPaddingRight();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount - 1; i++) {
final View child = parent.getChildAt(i);
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
.getLayoutParams();
// 以下计算主要用来确定绘制的位置
final int top = child.getBottom() + params.bottomMargin;
final int bottom = top + mDrawable.getIntrinsicHeight();
mDrawable.setBounds(left, top, right, bottom);
mDrawable.draw(c);
}
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State
state) {
outRect.set(0, 0, 0, mDrawable.getIntrinsicHeight());
}
}
2 divider_recycler
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017 Yan Zhenjie
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#1A737373"/>
<size android:height="2px"/>
</shape>
3 使用
mDetailRv.setLayoutManager(new LinearLayoutManager(this));
mDetailRv.addItemDecoration(new ListViewDecoration());