diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 4ca99d0..fd6d8bc 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -3,7 +3,7 @@
-
+
@@ -11,7 +11,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/sh/sar/basedbank/LockActivity.kt b/app/src/main/java/sh/sar/basedbank/LockActivity.kt
index ef63186..663abe4 100644
--- a/app/src/main/java/sh/sar/basedbank/LockActivity.kt
+++ b/app/src/main/java/sh/sar/basedbank/LockActivity.kt
@@ -10,6 +10,9 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricPrompt
import androidx.core.content.ContextCompat
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.google.android.material.button.MaterialButton
import kotlinx.coroutines.Dispatchers
@@ -41,8 +44,19 @@ class LockActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ WindowCompat.setDecorFitsSystemWindows(window, false)
binding = ActivityLockBinding.inflate(layoutInflater)
setContentView(binding.root)
+ val isLight = (resources.configuration.uiMode and android.content.res.Configuration.UI_MODE_NIGHT_MASK) == android.content.res.Configuration.UI_MODE_NIGHT_NO
+ WindowCompat.getInsetsController(window, window.decorView).apply {
+ isAppearanceLightStatusBars = isLight
+ isAppearanceLightNavigationBars = isLight
+ }
+ ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, insets ->
+ val bars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ view.setPadding(bars.left, bars.top, bars.right, bars.bottom)
+ insets
+ }
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
method = prefs.getString("security_method", "pin") ?: "pin"
diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt
index cec24ca..1cc9f8d 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt
@@ -1,6 +1,7 @@
package sh.sar.basedbank.ui.home
import android.content.Intent
+import android.content.res.Configuration
import android.os.Bundle
import android.os.CountDownTimer
import android.os.Handler
@@ -14,6 +15,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import androidx.activity.viewModels
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.WindowCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.Lifecycle
@@ -84,11 +86,17 @@ class HomeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ WindowCompat.setDecorFitsSystemWindows(window, false)
binding = ActivityHomeBinding.inflate(layoutInflater)
if (getSharedPreferences("prefs", MODE_PRIVATE).getBoolean("block_screenshots", true)) {
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_SECURE)
}
setContentView(binding.root)
+ val isLight = (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO
+ WindowCompat.getInsetsController(window, window.decorView).apply {
+ isAppearanceLightStatusBars = isLight
+ isAppearanceLightNavigationBars = isLight
+ }
setSupportActionBar(binding.toolbar)
toggle = ActionBarDrawerToggle(
diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt
index 1b97514..d688cc9 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/QrScannerActivity.kt
@@ -14,6 +14,9 @@ import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.CameraSelector
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
import androidx.camera.core.ImageAnalysis
import androidx.camera.core.Preview
import androidx.camera.core.resolutionselector.AspectRatioStrategy
@@ -84,8 +87,23 @@ class QrScannerActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ WindowCompat.setDecorFitsSystemWindows(window, false)
binding = ActivityQrScannerBinding.inflate(layoutInflater)
setContentView(binding.root)
+ // Black camera background — always use light (white) system bar icons
+ WindowCompat.getInsetsController(window, window.decorView).apply {
+ isAppearanceLightStatusBars = false
+ isAppearanceLightNavigationBars = false
+ }
+ val originalBtnMarginBottom = (48 * resources.displayMetrics.density).toInt()
+ ViewCompat.setOnApplyWindowInsetsListener(binding.btnContainer) { view, insets ->
+ val bars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ (view.layoutParams as android.widget.FrameLayout.LayoutParams).also {
+ it.bottomMargin = originalBtnMarginBottom + bars.bottom
+ view.layoutParams = it
+ }
+ insets
+ }
binding.btnCancel.setOnClickListener { finish() }
binding.btnPickImage.setOnClickListener { pickImageLauncher.launch("image/*") }
diff --git a/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt
index 267b433..1ac2926 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/login/LoginActivity.kt
@@ -1,7 +1,9 @@
package sh.sar.basedbank.ui.login
+import android.content.res.Configuration
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.WindowCompat
import sh.sar.basedbank.databinding.ActivityLoginBinding
class LoginActivity : AppCompatActivity() {
@@ -10,7 +12,13 @@ class LoginActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ WindowCompat.setDecorFitsSystemWindows(window, false)
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
+ val isLight = (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO
+ WindowCompat.getInsetsController(window, window.decorView).apply {
+ isAppearanceLightStatusBars = isLight
+ isAppearanceLightNavigationBars = isLight
+ }
}
}
diff --git a/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt
index 7788a23..dd27343 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt
@@ -8,6 +8,9 @@ import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayoutMediator
import sh.sar.basedbank.R
@@ -22,9 +25,21 @@ class OnboardingActivity : AppCompatActivity(), SecuritySetupFragment.Callback {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ WindowCompat.setDecorFitsSystemWindows(window, false)
binding = ActivityOnboardingBinding.inflate(layoutInflater)
setContentView(binding.root)
+ val isLight = (resources.configuration.uiMode and android.content.res.Configuration.UI_MODE_NIGHT_MASK) == android.content.res.Configuration.UI_MODE_NIGHT_NO
+ WindowCompat.getInsetsController(window, window.decorView).apply {
+ isAppearanceLightStatusBars = isLight
+ isAppearanceLightNavigationBars = isLight
+ }
prefs = getSharedPreferences("prefs", MODE_PRIVATE)
+ val originalBottomPadding = binding.bottomBar.paddingBottom
+ ViewCompat.setOnApplyWindowInsetsListener(binding.bottomBar) { view, insets ->
+ val navBar = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ view.setPadding(view.paddingLeft, view.paddingTop, view.paddingRight, originalBottomPadding + navBar.bottom)
+ insets
+ }
val adapter = OnboardingPagerAdapter(this)
binding.viewPager.adapter = adapter
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
index f8f3955..d3e5ada 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -4,17 +4,20 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:fitsSystemWindows="true">
+ android:background="?attr/colorSurface"
+ android:fitsSystemWindows="true">
+ android:layout_height="wrap_content"
+ android:fitsSystemWindows="true">
@@ -61,6 +65,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
+ android:fitsSystemWindows="true"
app:menu="@menu/drawer_menu" />
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 6551d2d..d09261b 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -4,7 +4,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="?attr/colorSurface">
+ android:background="?attr/colorSurface"
+ android:fitsSystemWindows="true">