Skip to content

Commit 714521b

Browse files
Material Design Teamdsn5ft
Material Design Team
authored andcommittedApr 26, 2022
[Divider] Fixed extra space when lastItemDecorated = false
Resolves #2511 PiperOrigin-RevId: 444556765
1 parent b2c3dd6 commit 714521b

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed
 

‎lib/java/com/google/android/material/divider/MaterialDividerItemDecoration.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -371,10 +371,12 @@ public void getItemOffsets(
371371
@NonNull RecyclerView parent,
372372
@NonNull RecyclerView.State state) {
373373
outRect.set(0, 0, 0, 0);
374-
if (orientation == VERTICAL) {
375-
outRect.bottom = dividerDrawable.getIntrinsicHeight() + thickness;
376-
} else {
377-
outRect.right = dividerDrawable.getIntrinsicWidth() + thickness;
374+
if (lastItemDecorated || parent.getChildLayoutPosition(view) != state.getItemCount() - 1) {
375+
if (orientation == VERTICAL) {
376+
outRect.bottom = dividerDrawable.getIntrinsicHeight() + thickness;
377+
} else {
378+
outRect.right = dividerDrawable.getIntrinsicWidth() + thickness;
379+
}
378380
}
379381
}
380382
}

‎lib/javatests/com/google/android/material/divider/MaterialDividerItemDecorationTest.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.graphics.Color;
2525
import android.graphics.Rect;
2626
import androidx.recyclerview.widget.RecyclerView;
27+
import android.view.View;
2728
import android.widget.LinearLayout;
2829
import androidx.test.core.app.ApplicationProvider;
2930
import org.junit.Before;
@@ -46,6 +47,7 @@ public final class MaterialDividerItemDecorationTest {
4647
private final Context context = ApplicationProvider.getApplicationContext();
4748

4849
@Mock private RecyclerView.State state;
50+
@Mock private View view;
4951
@Mock private RecyclerView recyclerView;
5052
private Rect rect;
5153
private MaterialDividerItemDecoration divider;
@@ -141,7 +143,7 @@ public void setLastItemNotDecorated_succeeds() {
141143

142144
@Test
143145
public void getItemOffsets_verticalOrientation_returnsCorrectRect() {
144-
divider.getItemOffsets(rect, /* view= */ null, recyclerView, state);
146+
divider.getItemOffsets(rect, view, recyclerView, state);
145147

146148
assertThat(rect).isEqualTo(new Rect(0, 0, 0, DIVIDER_THICKNESS));
147149
}
@@ -150,7 +152,7 @@ public void getItemOffsets_verticalOrientation_returnsCorrectRect() {
150152
public void getItemOffsets_horizontalOrientation_returnsCorrectRect() {
151153
divider.setOrientation(LinearLayout.HORIZONTAL);
152154

153-
divider.getItemOffsets(rect, /* view= */ null, recyclerView, state);
155+
divider.getItemOffsets(rect, view, recyclerView, state);
154156

155157
assertThat(rect).isEqualTo(new Rect(0, 0, DIVIDER_THICKNESS, 0));
156158
}

0 commit comments

Comments
 (0)
Please sign in to comment.