Skip to content

Commit 8a28801

Browse files
committed
fix(ui): edge-to-edge insets for preference screens and log viewer FAB
Preference list content was sitting under the bottom system bar, and the log viewer's share FAB lost its margin when system bar insets changed.
1 parent 0775189 commit 8a28801

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

project/app/src/main/java/org/owntracks/android/ui/preferences/AbstractPreferenceFragment.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package org.owntracks.android.ui.preferences
22

33
import android.os.Bundle
4+
import android.view.View
5+
import androidx.core.view.ViewCompat
6+
import androidx.core.view.WindowInsetsCompat
7+
import androidx.core.view.updatePadding
48
import androidx.preference.PreferenceFragmentCompat
59
import javax.inject.Inject
610
import org.owntracks.android.R
@@ -17,6 +21,16 @@ abstract class AbstractPreferenceFragment : PreferenceFragmentCompat() {
1721
preferenceManager.preferenceDataStore = preferenceDataStore
1822
}
1923

24+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
25+
super.onViewCreated(view, savedInstanceState)
26+
ViewCompat.setOnApplyWindowInsetsListener(listView) { v, insets ->
27+
val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
28+
v.updatePadding(bottom = systemBarsInsets.bottom)
29+
insets
30+
}
31+
ViewCompat.requestApplyInsets(view)
32+
}
33+
2034
protected val connectionMode: String
2135
get() =
2236
when (preferences.mode) {

project/app/src/main/java/org/owntracks/android/ui/status/logs/LogViewerActivity.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ import androidx.activity.viewModels
1212
import androidx.appcompat.app.AppCompatActivity
1313
import androidx.core.app.ShareCompat
1414
import androidx.core.net.toUri
15+
import androidx.coordinatorlayout.widget.CoordinatorLayout
1516
import androidx.core.view.ViewCompat
1617
import androidx.core.view.WindowInsetsCompat
18+
import androidx.core.view.updateLayoutParams
1719
import androidx.core.view.updatePadding
1820
import androidx.databinding.DataBindingUtil
1921
import androidx.lifecycle.Lifecycle
@@ -57,9 +59,14 @@ class LogViewerActivity : AppCompatActivity() {
5759
setSupportActionBar(appbar.toolbar)
5860

5961
// Handle window insets for edge-to-edge
62+
val fabBaseMarginBottom =
63+
(shareFab.layoutParams as CoordinatorLayout.LayoutParams).bottomMargin
6064
ViewCompat.setOnApplyWindowInsetsListener(frame) { _, windowInsets ->
6165
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
6266
appbar.root.updatePadding(top = insets.top)
67+
shareFab.updateLayoutParams<CoordinatorLayout.LayoutParams> {
68+
bottomMargin = fabBaseMarginBottom + insets.bottom
69+
}
6370
WindowInsetsCompat.CONSUMED
6471
}
6572
}

0 commit comments

Comments
 (0)