Skip to content

Commit

Permalink
detail: fix bouncing when navigating to song
Browse files Browse the repository at this point in the history
  • Loading branch information
OxygenCobalt committed Jan 11, 2025
1 parent 85a2952 commit 698f0bc
Showing 1 changed file with 8 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import android.os.Bundle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearSmoothScroller
import androidx.recyclerview.widget.RecyclerView
import dagger.hilt.android.AndroidEntryPoint
import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentDetailBinding
Expand Down Expand Up @@ -298,6 +299,11 @@ class AlbumDetailFragment : DetailFragment<Album, Song>() {
// RecyclerView will scroll assuming it has the total height of the screen (i.e a
// collapsed appbar), so we need to collapse the appbar if that's the case.
binding.detailAppbar.setExpanded(false)
if (!binding.detailRecycler.canScroll()) {
// Don't scroll if the RecyclerView goes off screen. If we go anyway, overscroll
// kicks in and creates a weird bounce effect.
return
}
binding.detailRecycler.post {
// Use a custom smooth scroller that will settle the item in the middle of
// the screen rather than the end.
Expand All @@ -323,4 +329,6 @@ class AlbumDetailFragment : DetailFragment<Album, Song>() {
}
}
}

private fun RecyclerView.canScroll() = computeVerticalScrollRange() > height
}

0 comments on commit 698f0bc

Please sign in to comment.