From edb80468da1a4eb81b205d660f67a571f82675ae Mon Sep 17 00:00:00 2001 From: Kizito Nwose Date: Sun, 14 Feb 2021 20:23:40 +0100 Subject: [PATCH] Fix #266 --- .../calendarview/ui/CalendarAdapter.kt | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/library/src/main/java/com/kizitonwose/calendarview/ui/CalendarAdapter.kt b/library/src/main/java/com/kizitonwose/calendarview/ui/CalendarAdapter.kt index c1dcd39e..123fc7e3 100644 --- a/library/src/main/java/com/kizitonwose/calendarview/ui/CalendarAdapter.kt +++ b/library/src/main/java/com/kizitonwose/calendarview/ui/CalendarAdapter.kt @@ -14,7 +14,6 @@ import androidx.recyclerview.widget.RecyclerView import com.kizitonwose.calendarview.CalendarView import com.kizitonwose.calendarview.model.* import com.kizitonwose.calendarview.utils.NO_INDEX -import com.kizitonwose.calendarview.utils.getVerticalMargins import com.kizitonwose.calendarview.utils.inflate import com.kizitonwose.calendarview.utils.orZero import java.time.LocalDate @@ -218,29 +217,26 @@ internal class CalendarAdapter( val visibleVH = calView.findViewHolderForAdapterPosition(visibleItemPos) as? MonthViewHolder ?: return val newHeight = visibleVH.headerView?.height.orZero() + - visibleVH.headerView?.getVerticalMargins().orZero() + // visibleVH.bodyLayout.height` won't not give us the right height as it differs // depending on row count in the month. So we calculate the appropriate height // by checking the number of visible(non-empty) rows. visibleMonth.weekDays.size * calView.daySize.height + - visibleVH.footerView?.height.orZero() + - visibleVH.footerView?.getVerticalMargins().orZero() - if (calView.height != newHeight) { + visibleVH.footerView?.height.orZero() + if (calView.height != newHeight && !initialLayout) { ValueAnimator.ofInt(calView.height, newHeight).apply { // Don't animate when the view is shown initially. - duration = if (initialLayout) 0 else calView.wrappedPageHeightAnimationDuration.toLong() + duration = calView.wrappedPageHeightAnimationDuration.toLong() addUpdateListener { calView.updateLayoutParams { height = it.animatedValue as Int } visibleVH.itemView.requestLayout() } start() } - } - if (initialLayout) { - initialLayout = false - // Request layout in case dataset was changed. See issue #199 + } else { + // Fixes #199, #266 visibleVH.itemView.requestLayout() } + if (initialLayout) initialLayout = false } } }