diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt index c41ddd811..363bb235e 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt @@ -21,6 +21,7 @@ import android.os.Bundle import android.view.LayoutInflater import androidx.core.view.updatePadding import androidx.fragment.app.activityViewModels +import kotlin.math.max import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding import org.oxycblt.auxio.music.Song @@ -29,6 +30,7 @@ import org.oxycblt.auxio.ui.NavigationViewModel import org.oxycblt.auxio.ui.ViewBindingFragment import org.oxycblt.auxio.util.getColorStateListSafe import org.oxycblt.auxio.util.launch +import org.oxycblt.auxio.util.systemBarInsetsCompat import org.oxycblt.auxio.util.systemGestureInsetsCompat import org.oxycblt.auxio.util.textSafe @@ -58,10 +60,12 @@ class PlaybackBarFragment : ViewBindingFragment() { setOnApplyWindowInsetsListener { view, insets -> // Since we swipe up this view, we need to make sure it does not collide with - // any gesture events. So, apply the system gesture insets if present and then - // only default to the system bar insets when there are no other options. - val gesturePadding = insets.systemGestureInsetsCompat - view.updatePadding(bottom = gesturePadding.bottom) + // any gesture events. So, apply the system gesture insets if present as long + // as they are *larger* than the bar insets. This is to resolve issues where + // the gesture insets are not sane on OEM devices. + val bars = insets.systemBarInsetsCompat + val gestures = insets.systemGestureInsetsCompat + view.updatePadding(bottom = max(bars.bottom, gestures.bottom)) insets } }