fix: apply status bar insets to toolbar

This commit is contained in:
2026-04-03 16:41:39 -05:00
parent e8be7a4fc2
commit c62d82d43c
2 changed files with 26 additions and 0 deletions
@@ -12,6 +12,7 @@ import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.LayoutInflater
import android.view.View
import android.webkit.WebChromeClient
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
@@ -27,6 +28,9 @@ import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.appbar.MaterialToolbar
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import okhttp3.Call
@@ -44,6 +48,7 @@ class MainActivity : AppCompatActivity() {
private val connectivityManager by lazy { getSystemService(ConnectivityManager::class.java) }
private lateinit var web: WebView
private lateinit var appBar: AppBarLayout
private lateinit var toolbar: MaterialToolbar
private var activeBaseUrl: String? = null
@@ -81,8 +86,10 @@ class MainActivity : AppCompatActivity() {
setContentView(R.layout.activity_main)
val openServers = intent.getBooleanExtra("open_servers", false)
appBar = findViewById(R.id.appBar)
toolbar = findViewById(R.id.toolbar)
web = findViewById(R.id.web)
applyWindowInsets()
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (this@MainActivity::web.isInitialized && web.canGoBack()) {
@@ -153,6 +160,24 @@ class MainActivity : AppCompatActivity() {
web.settings.userAgentString = web.settings.userAgentString + " RelayTV/$versionName"
}
private fun applyWindowInsets() {
val initialTopPadding = appBar.paddingTop
val initialLeftPadding = appBar.paddingLeft
val initialRightPadding = appBar.paddingRight
ViewCompat.setOnApplyWindowInsetsListener(appBar) { view: View, insets: WindowInsetsCompat ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
view.setPadding(
initialLeftPadding + systemBars.left,
initialTopPadding + systemBars.top,
initialRightPadding + systemBars.right,
view.paddingBottom
)
insets
}
ViewCompat.requestApplyInsets(appBar)
}
private fun openPrivacyPolicy() {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.privacy_policy_url)))
runCatching {
@@ -5,6 +5,7 @@
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBar"
android:layout_width="match_parent"
android:layout_height="wrap_content">