Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/src/main/java/net/duhowpi/ftmsbridge/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import net.duhowpi.ftmsbridge.ftms.FtmsConstants
import net.duhowpi.ftmsbridge.ftms.FtmsDataParser
import net.duhowpi.ftmsbridge.model.FitnessSample
import net.duhowpi.ftmsbridge.model.ScannedDeviceInfo
import net.duhowpi.ftmsbridge.ui.applySystemBarInsets
import java.nio.ByteBuffer
import java.nio.ByteOrder
import java.util.UUID
Expand Down Expand Up @@ -226,6 +227,7 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.root.applySystemBarInsets()

binding.toolbar.title = getString(R.string.app_name)
setSupportActionBar(binding.toolbar)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import net.duhowpi.ftmsbridge.data.AppDatabase
import net.duhowpi.ftmsbridge.data.WorkoutSample
import net.duhowpi.ftmsbridge.data.WorkoutSession
import net.duhowpi.ftmsbridge.databinding.ActivityWorkoutDetailBinding
import net.duhowpi.ftmsbridge.ui.applySystemBarInsets
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
Expand All @@ -34,6 +35,7 @@ class WorkoutDetailActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = ActivityWorkoutDetailBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.root.applySystemBarInsets()

setSupportActionBar(binding.toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import kotlinx.coroutines.withContext
import net.duhowpi.ftmsbridge.data.AppDatabase
import net.duhowpi.ftmsbridge.data.WorkoutSession
import net.duhowpi.ftmsbridge.databinding.ActivityWorkoutHistoryBinding
import net.duhowpi.ftmsbridge.ui.applySystemBarInsets
import java.io.File
import java.text.SimpleDateFormat
import java.util.Date
Expand All @@ -48,6 +49,7 @@ class WorkoutHistoryActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = ActivityWorkoutHistoryBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.root.applySystemBarInsets()

binding.toolbar.title = getString(R.string.workout_history)
setSupportActionBar(binding.toolbar)
Expand Down
29 changes: 29 additions & 0 deletions app/src/main/java/net/duhowpi/ftmsbridge/ui/Insets.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package net.duhowpi.ftmsbridge.ui

import android.view.View
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding

/**
* Pads this view by the system bar and display cutout insets.
*
* Android 15 lays apps targeting SDK 35 or later out edge to edge, so the window extends
* behind the status and navigation bars. Each activity here uses a plain LinearLayout with
* the toolbar as its first child, which would otherwise be drawn underneath the status bar,
* leaving the overflow menu overlapping the status icons and swallowing taps on it.
*/
fun View.applySystemBarInsets() {
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
val insets = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()
)
view.updatePadding(
left = insets.left,
top = insets.top,
right = insets.right,
bottom = insets.bottom
)
windowInsets
}
}