From b0b55b50693ab9391a1bf15a9eedd2b2791e4135 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 15 Jan 2025 09:48:27 -0700 Subject: [PATCH] main: band-aid bottom sheets flipping out pre-30 Caused by busted legacy window insets behavior biting me again. --- .../oxycblt/auxio/ui/EatInsetsFrameLayout.kt | 28 +++++++++++++++++++ .../auxio/{home => ui}/EdgeFrameLayout.kt | 4 +-- .../main/res/layout-w720dp/fragment_main.xml | 8 +++--- .../main/res/layout/fragment_home_list.xml | 4 +-- app/src/main/res/layout/fragment_main.xml | 8 +++--- media | 2 +- 6 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/org/oxycblt/auxio/ui/EatInsetsFrameLayout.kt rename app/src/main/java/org/oxycblt/auxio/{home => ui}/EdgeFrameLayout.kt (93%) diff --git a/app/src/main/java/org/oxycblt/auxio/ui/EatInsetsFrameLayout.kt b/app/src/main/java/org/oxycblt/auxio/ui/EatInsetsFrameLayout.kt new file mode 100644 index 000000000..76a0de000 --- /dev/null +++ b/app/src/main/java/org/oxycblt/auxio/ui/EatInsetsFrameLayout.kt @@ -0,0 +1,28 @@ +package org.oxycblt.auxio.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.WindowInsets +import android.widget.FrameLayout +import androidx.annotation.AttrRes + +/** + * A [FrameLayout] that works around the pre-Android 10 behavior of propagating + * mutated insets to sibling views. Wrap this around views that to isolate + * mutated window insets. + * + * @author Alexander Capehart (OxygenCobalt) + */ +class EatInsetsFrameLayout +@JvmOverloads +constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) : + FrameLayout(context, attrs, defStyleAttr) { + init { + clipToPadding = false + } + + override fun dispatchApplyWindowInsets(insets: WindowInsets): WindowInsets { + super.dispatchApplyWindowInsets(insets) + return insets + } +} \ No newline at end of file diff --git a/app/src/main/java/org/oxycblt/auxio/home/EdgeFrameLayout.kt b/app/src/main/java/org/oxycblt/auxio/ui/EdgeFrameLayout.kt similarity index 93% rename from app/src/main/java/org/oxycblt/auxio/home/EdgeFrameLayout.kt rename to app/src/main/java/org/oxycblt/auxio/ui/EdgeFrameLayout.kt index 5deec4fcc..c057eccea 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/EdgeFrameLayout.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/EdgeFrameLayout.kt @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package org.oxycblt.auxio.home +package org.oxycblt.auxio.ui import android.content.Context import android.util.AttributeSet @@ -40,8 +40,8 @@ constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr } override fun onApplyWindowInsets(insets: WindowInsets): WindowInsets { - // Prevent excessive layouts by using translation instead of padding. updatePadding(bottom = insets.systemBarInsetsCompat.bottom) return insets } } + diff --git a/app/src/main/res/layout-w720dp/fragment_main.xml b/app/src/main/res/layout-w720dp/fragment_main.xml index 90a55472a..c7cd805f2 100644 --- a/app/src/main/res/layout-w720dp/fragment_main.xml +++ b/app/src/main/res/layout-w720dp/fragment_main.xml @@ -8,7 +8,7 @@ android:background="?attr/colorSurface"> - @@ -23,7 +23,7 @@ tools:layout="@layout/fragment_home" /> - - + - + - @@ -53,5 +53,5 @@ - + diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index ad115ed4c..9c4de0ad4 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -8,7 +8,7 @@ android:background="?attr/colorSurface" android:transitionGroup="true"> - @@ -28,7 +28,7 @@ android:layout_height="match_parent" android:visibility="invisible" /> - - + - +