Implement NavigationBar theme

This commit is contained in:
Jonathan Klee 2024-09-20 09:09:30 +02:00
parent 61dadcba85
commit 5684aba36d

View file

@ -1,25 +1,60 @@
package io.heckel.ntfy.ui package io.heckel.ntfy.ui
import android.content.res.Configuration
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.WindowInsetsController
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import io.heckel.ntfy.R import io.heckel.ntfy.R
import io.heckel.ntfy.databinding.MainSettingsActivityBinding import io.heckel.ntfy.databinding.MainSettingsActivityBinding
class MainSettingsActivity : AppCompatActivity() { class MainSettingsActivity : AppCompatActivity() {
private lateinit var mBinding: MainSettingsActivityBinding private lateinit var mBinding: MainSettingsActivityBinding
@RequiresApi(Build.VERSION_CODES.R)
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
mBinding = MainSettingsActivityBinding.inflate(layoutInflater) mBinding = MainSettingsActivityBinding.inflate(layoutInflater)
setContentView(mBinding.root) setContentView(mBinding.root)
mBinding.toolbar.setNavigationOnClickListener { setupToolbar()
onBackPressed() setSystemBarsAppearance()
showPreferencesFragment()
} }
private fun setupToolbar() {
mBinding.toolbar.setNavigationOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
@RequiresApi(Build.VERSION_CODES.R)
private fun setSystemBarsAppearance() {
val insetsController = window.insetsController ?: return
val isLightMode = isSystemInLightMode()
if (isLightMode) {
insetsController.setSystemBarsAppearance(
WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS,
WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
)
} else {
insetsController.setSystemBarsAppearance(
0,
WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
)
}
}
private fun isSystemInLightMode(): Boolean {
val nightModeFlags = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
return nightModeFlags != Configuration.UI_MODE_NIGHT_YES
}
private fun showPreferencesFragment() {
supportFragmentManager supportFragmentManager
.beginTransaction() .beginTransaction()
.replace(R.id.fragment_container, PreferencesFragment()) .replace(R.id.fragment_container, PreferencesFragment())