From e37b53351d04e68fae366146cd64899994b346ea Mon Sep 17 00:00:00 2001 From: Rohit Verma Date: Thu, 7 Aug 2025 23:26:39 +0530 Subject: [PATCH] chore(ui): add extension functions for applying edge to edge insets --- .../free/nrw/commons/utils/EdgeToEdgeUtils.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app/src/main/java/fr/free/nrw/commons/utils/EdgeToEdgeUtils.kt diff --git a/app/src/main/java/fr/free/nrw/commons/utils/EdgeToEdgeUtils.kt b/app/src/main/java/fr/free/nrw/commons/utils/EdgeToEdgeUtils.kt new file mode 100644 index 000000000..51503faaa --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/EdgeToEdgeUtils.kt @@ -0,0 +1,42 @@ +package fr.free.nrw.commons.utils + +import androidx.core.graphics.Insets +import android.view.View +import android.view.ViewGroup.MarginLayoutParams +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams + +fun View.applyEdgeToEdgeInsets( + typeMask: Int = WindowInsetsCompat.Type.systemBars(), + block: MarginLayoutParams.(Insets) -> Unit +) { + ViewCompat.setOnApplyWindowInsetsListener(this) { v, windowInsets -> + val insets = windowInsets.getInsets(typeMask) + + v.updateLayoutParams { + apply { block(insets) } + } + + WindowInsetsCompat.CONSUMED + } +} + +fun applyEdgeToEdgeAllInsets(view: View) = view.applyEdgeToEdgeInsets { insets -> + leftMargin = insets.left + rightMargin = insets.right + topMargin = insets.top + bottomMargin = insets.bottom +} + +fun applyEdgeToEdgeTopInsets(view: View) = view.applyEdgeToEdgeInsets { insets -> + leftMargin = insets.left + rightMargin = insets.right + topMargin = insets.top +} + +fun applyEdgeToEdgeBottomInsets(view: View) = view.applyEdgeToEdgeInsets { insets -> + leftMargin = insets.left + rightMargin = insets.right + bottomMargin = insets.bottom +} \ No newline at end of file