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>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user