From bd0967e36eec4c85e332121f0b97e82a65c64dba Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 6 May 2025 22:12:14 +0200 Subject: [PATCH] SettingsActivity: manually apply insets for api 35 The forced EdgeToEdge changes don't work well with PreferenceFragmentCompat, because it's basically abandoned by androidx, so apply the insets manually ourselves. Signed-off-by: Jason A. Donenfeld --- .../android/activity/SettingsActivity.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.kt b/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.kt index 574dfc72..9f492ed0 100644 --- a/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.kt +++ b/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.kt @@ -7,8 +7,14 @@ package com.wireguard.android.activity import android.content.Intent import android.os.Build import android.os.Bundle +import android.view.LayoutInflater import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams import androidx.fragment.app.commit import androidx.lifecycle.lifecycleScope import androidx.preference.Preference @@ -45,6 +51,24 @@ class SettingsActivity : AppCompatActivity() { } class SettingsFragment : PreferenceFragmentCompat() { + + // Since this is pretty much abandoned by androidx, it never got updated for proper EdgeToEdge support, + // which is enabled everywhere for API 35. So handle the insets manually here. + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + val view = super.onCreateView(inflater, container, savedInstanceState) + ViewCompat.setOnApplyWindowInsetsListener(view) { v, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.updateLayoutParams { + leftMargin = insets.left + bottomMargin = insets.bottom + rightMargin = insets.right + topMargin = insets.top + } + WindowInsetsCompat.CONSUMED + } + return view + } + override fun onCreatePreferences(savedInstanceState: Bundle?, key: String?) { preferenceManager.preferenceDataStore = PreferencesPreferenceDataStore(lifecycleScope, Application.getPreferencesDataStore()) addPreferencesFromResource(R.xml.preferences)