RecyclearView에서 줄 사이에 구분선 표시
8465 단어 Android
@wasabeef_jp
참조: http://wasabeef.jp/recyclerview-itemdecoration/
최근 몇 년 동안ListView2라고 불리는 RecyclearView를 사용하는 경우가 증가했다
ListView에서 다음과 같이 ListView의 xml 구분선(divider)을 정의합니다.
설정이 쉬울 것 같아요.
android:divider="#000000"
android:dividerHeight="2sp"
RecyclearView에서 xml로 정의된 것이 아닙니다자바에 설정이 필요하니까 그 간단한 tips를 소개해 드릴게요.
RecyclearView를 직접 사용하면 다음 구분선이 없는 목록이 됩니다
그래서 RecyclearView가 등장했습니다.Item Decoration입니다.
RecyclerView.ItemDecoration에서 자체 제작한 범주를 정의합니다.
온드라우에서 디바이더를 그려주면 예쁘게 나와요.
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
private static final int[] ATTRS = new int[]{
android.R.attr.listDivider
};
private Drawable mDivider;
public DividerItemDecoration(Context context) {
final TypedArray a = context.obtainStyledAttributes(ATTRS);
mDivider = a.getDrawable(0);
a.recycle();
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
drawVertical(c, parent);
}
public void drawVertical(Canvas c, RecyclerView parent) {
final int left = parent.getPaddingLeft();
final int right = parent.getWidth() - parent.getPaddingRight();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; 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 + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
}
}
addItem Decoration으로 추가 정의된 사용자 정의 클래스를 사용한다면language-java
mRecyclerView.addItemDecoration(new DividerItemDecoration(context));
이런 느낌으로.잡감
간단한 Divider를 표시하면 ListView보다 더 번거로움
홀수 짝수로 디바이더의 표현을 바꾸면서 점선을 추가한 디바이더 등의 자유도가 높아졌다.
Reference
이 문제에 관하여(RecyclearView에서 줄 사이에 구분선 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wasabeef_jp/items/6399432b899cb5613fb1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)