diff options
author | 2025-05-06 22:12:14 +0200 | |
---|---|---|
committer | 2025-05-08 04:59:37 +0200 | |
commit | bd0967e36eec4c85e332121f0b97e82a65c64dba (patch) | |
tree | 9a530a5160dee0d840eaa1533e69c9dda86b3b10 /ui/src | |
parent | SettingsActivity: remove unused imports (diff) | |
download | wireguard-android-bd0967e36eec4c85e332121f0b97e82a65c64dba.tar.xz wireguard-android-bd0967e36eec4c85e332121f0b97e82a65c64dba.zip |
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 <Jason@zx2c4.com>
Diffstat (limited to 'ui/src')
-rw-r--r-- | ui/src/main/java/com/wireguard/android/activity/SettingsActivity.kt | 24 |
1 files changed, 24 insertions, 0 deletions
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<ViewGroup.MarginLayoutParams> { + 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) |