diff --git a/lib/java/com/google/android/material/divider/MaterialDividerItemDecoration.java b/lib/java/com/google/android/material/divider/MaterialDividerItemDecoration.java index 8aea0acdf97..6d747567c66 100644 --- a/lib/java/com/google/android/material/divider/MaterialDividerItemDecoration.java +++ b/lib/java/com/google/android/material/divider/MaterialDividerItemDecoration.java @@ -371,10 +371,12 @@ public void getItemOffsets( @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { outRect.set(0, 0, 0, 0); - if (orientation == VERTICAL) { - outRect.bottom = dividerDrawable.getIntrinsicHeight() + thickness; - } else { - outRect.right = dividerDrawable.getIntrinsicWidth() + thickness; + if (lastItemDecorated || parent.getChildLayoutPosition(view) != state.getItemCount() - 1) { + if (orientation == VERTICAL) { + outRect.bottom = dividerDrawable.getIntrinsicHeight() + thickness; + } else { + outRect.right = dividerDrawable.getIntrinsicWidth() + thickness; + } } } } diff --git a/lib/javatests/com/google/android/material/divider/MaterialDividerItemDecorationTest.java b/lib/javatests/com/google/android/material/divider/MaterialDividerItemDecorationTest.java index df036e65c01..a99b857b55f 100644 --- a/lib/javatests/com/google/android/material/divider/MaterialDividerItemDecorationTest.java +++ b/lib/javatests/com/google/android/material/divider/MaterialDividerItemDecorationTest.java @@ -24,6 +24,7 @@ import android.graphics.Color; import android.graphics.Rect; import androidx.recyclerview.widget.RecyclerView; +import android.view.View; import android.widget.LinearLayout; import androidx.test.core.app.ApplicationProvider; import org.junit.Before; @@ -46,6 +47,7 @@ public final class MaterialDividerItemDecorationTest { private final Context context = ApplicationProvider.getApplicationContext(); @Mock private RecyclerView.State state; + @Mock private View view; @Mock private RecyclerView recyclerView; private Rect rect; private MaterialDividerItemDecoration divider; @@ -141,7 +143,7 @@ public void setLastItemNotDecorated_succeeds() { @Test public void getItemOffsets_verticalOrientation_returnsCorrectRect() { - divider.getItemOffsets(rect, /* view= */ null, recyclerView, state); + divider.getItemOffsets(rect, view, recyclerView, state); assertThat(rect).isEqualTo(new Rect(0, 0, 0, DIVIDER_THICKNESS)); } @@ -150,7 +152,7 @@ public void getItemOffsets_verticalOrientation_returnsCorrectRect() { public void getItemOffsets_horizontalOrientation_returnsCorrectRect() { divider.setOrientation(LinearLayout.HORIZONTAL); - divider.getItemOffsets(rect, /* view= */ null, recyclerView, state); + divider.getItemOffsets(rect, view, recyclerView, state); assertThat(rect).isEqualTo(new Rect(0, 0, DIVIDER_THICKNESS, 0)); }