Make navigation bar match color
This commit is contained in:
@@ -2,6 +2,9 @@ package gq.kirmanak.mealient.extensions
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.content.res.Configuration.UI_MODE_NIGHT_MASK
|
||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||
import android.os.Build
|
||||
import android.view.View
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.EditText
|
||||
@@ -114,4 +117,11 @@ private fun Context.showToast(text: String, length: Int) {
|
||||
fun View.hideKeyboard() {
|
||||
val imm = context.getSystemService<InputMethodManager>()
|
||||
imm?.hideSoftInputFromWindow(windowToken, 0)
|
||||
}
|
||||
|
||||
fun Context.isDarkThemeOn(): Boolean {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
|
||||
resources.configuration.isNightModeActive
|
||||
else
|
||||
resources.configuration.uiMode and UI_MODE_NIGHT_MASK == UI_MODE_NIGHT_YES
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.appcompat.widget.SearchView.OnQueryTextListener
|
||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
import androidx.core.view.WindowInsetsControllerCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDirections
|
||||
@@ -19,6 +20,7 @@ import gq.kirmanak.mealient.NavGraphDirections.Companion.actionGlobalBaseURLFrag
|
||||
import gq.kirmanak.mealient.NavGraphDirections.Companion.actionGlobalRecipesListFragment
|
||||
import gq.kirmanak.mealient.R
|
||||
import gq.kirmanak.mealient.databinding.MainActivityBinding
|
||||
import gq.kirmanak.mealient.extensions.isDarkThemeOn
|
||||
import gq.kirmanak.mealient.extensions.observeOnce
|
||||
import gq.kirmanak.mealient.logging.Logger
|
||||
import javax.inject.Inject
|
||||
@@ -40,24 +42,28 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
|
||||
logger.v { "onCreate() called with: savedInstanceState = $savedInstanceState" }
|
||||
splashScreen.setKeepOnScreenCondition { viewModel.startDestination.value == null }
|
||||
setContentView(binding.root)
|
||||
configureToolbar()
|
||||
setupUi()
|
||||
configureNavGraph()
|
||||
viewModel.uiStateLive.observe(this, ::onUiStateChange)
|
||||
binding.navigationView.setNavigationItemSelectedListener(::onNavigationItemSelected)
|
||||
}
|
||||
|
||||
private fun configureNavGraph() {
|
||||
logger.v { "configureNavGraph() called" }
|
||||
viewModel.startDestination.observeOnce(this) {
|
||||
logger.d { "configureNavGraph: received destination" }
|
||||
val graph = navController.navInflater.inflate(R.navigation.nav_graph)
|
||||
val controller = navController
|
||||
val graph = controller.navInflater.inflate(R.navigation.nav_graph)
|
||||
graph.setStartDestination(it)
|
||||
navController.setGraph(graph, intent.extras)
|
||||
controller.setGraph(graph, intent.extras)
|
||||
}
|
||||
}
|
||||
|
||||
private fun configureToolbar() {
|
||||
private fun setupUi() {
|
||||
binding.toolbar.setNavigationOnClickListener { binding.drawer.open() }
|
||||
binding.navigationView.setNavigationItemSelectedListener(::onNavigationItemSelected)
|
||||
val insetsController = WindowInsetsControllerCompat(window, window.decorView)
|
||||
insetsController.isAppearanceLightNavigationBars = !isDarkThemeOn()
|
||||
insetsController.isAppearanceLightStatusBars = !isDarkThemeOn()
|
||||
viewModel.uiStateLive.observe(this, ::onUiStateChange)
|
||||
}
|
||||
|
||||
private fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
|
||||
|
||||
@@ -6,11 +6,4 @@
|
||||
<item name="windowSplashScreenBackground">@android:color/black</item>
|
||||
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_screen</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme" parent="Theme.Material3.DynamicColors.Dark">
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -6,10 +6,10 @@
|
||||
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_screen</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme" parent="Theme.Material3.DynamicColors.Light">
|
||||
<style name="AppTheme" parent="Theme.Material3.DynamicColors.DayNight">
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user