Skip to content

Commit d9946bb

Browse files
authored
Enable edge-to-edge support on all versions of Android (#5428)
**Story:** https://app.shortcut.com/simpledotorg/story/15545/enable-edge-to-edge-support-on-all-versions-of-android <!-- GitButler Footer Boundary Top --> --- This is **part 2 of 2 in a stack** made with GitButler: - <kbd>&nbsp;2&nbsp;</kbd> #5428 👈 - <kbd>&nbsp;1&nbsp;</kbd> #5408 <!-- GitButler Footer Boundary Bottom -->
1 parent f9f6dea commit d9946bb

File tree

18 files changed

+143
-3
lines changed

18 files changed

+143
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Internal
66

77
- Handle window insets when displaying app content in edge-to-edge
8+
- Enable edge-to-edge support on all versions of Android
89

910
## 2025.05.20
1011

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ dependencies {
302302
implementation(libs.androidx.recyclerview)
303303
implementation(libs.androidx.viewpager2)
304304
implementation(libs.androidx.security.crypto)
305+
implementation(libs.androidx.activity)
305306

306307
implementation(libs.bundles.androidx.camera)
307308

app/src/main/java/org/simple/clinic/drugs/search/DrugsSearchScreen.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import org.simple.clinic.navigation.v2.ScreenKey
2929
import org.simple.clinic.navigation.v2.fragments.BaseScreen
3030
import org.simple.clinic.util.applyStatusBarPadding
3131
import org.simple.clinic.util.debounce
32+
import org.simple.clinic.util.lightStatusBar
3233
import org.simple.clinic.widgets.PagingItemAdapter
3334
import org.simple.clinic.widgets.UiEvent
3435
import org.simple.clinic.widgets.showKeyboard
@@ -105,6 +106,16 @@ class DrugsSearchScreen : BaseScreen<
105106
context.injector<Injector>().inject(this)
106107
}
107108

109+
override fun onResume() {
110+
super.onResume()
111+
lightStatusBar(enabled = true)
112+
}
113+
114+
override fun onStop() {
115+
lightStatusBar(enabled = false)
116+
super.onStop()
117+
}
118+
108119
override fun bindView(
109120
layoutInflater: LayoutInflater,
110121
container: ViewGroup?

app/src/main/java/org/simple/clinic/editpatient/EditPatientScreen.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ import org.simple.clinic.util.afterTextChangedWatcher
8787
import org.simple.clinic.util.applyInsetsBottomPadding
8888
import org.simple.clinic.util.applyStatusBarPadding
8989
import org.simple.clinic.util.exhaustive
90+
import org.simple.clinic.util.lightStatusBar
9091
import org.simple.clinic.util.resolveColor
9192
import org.simple.clinic.util.setFragmentResultListener
9293
import org.simple.clinic.util.unsafeLazy
@@ -375,6 +376,16 @@ class EditPatientScreen : BaseScreen<
375376
context.injector<Injector>().inject(this)
376377
}
377378

379+
override fun onResume() {
380+
super.onResume()
381+
lightStatusBar(enabled = true)
382+
}
383+
384+
override fun onStop() {
385+
lightStatusBar(enabled = false)
386+
super.onStop()
387+
}
388+
378389
override fun onCreate(savedInstanceState: Bundle?) {
379390
super.onCreate(savedInstanceState)
380391
handleScanIdentifierResult()

app/src/main/java/org/simple/clinic/facility/change/FacilityChangeScreen.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.simple.clinic.navigation.v2.ScreenKey
2121
import org.simple.clinic.navigation.v2.Succeeded
2222
import org.simple.clinic.navigation.v2.fragments.BaseScreen
2323
import org.simple.clinic.activity.permissions.RuntimePermissions
24+
import org.simple.clinic.util.lightStatusBar
2425
import org.simple.clinic.util.setFragmentResultListener
2526
import org.simple.clinic.widgets.UiEvent
2627
import java.util.Locale
@@ -88,6 +89,16 @@ class FacilityChangeScreen :
8889
}
8990
}
9091

92+
override fun onResume() {
93+
super.onResume()
94+
lightStatusBar(enabled = true)
95+
}
96+
97+
override fun onStop() {
98+
lightStatusBar(enabled = false)
99+
super.onStop()
100+
}
101+
91102
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
92103
super.onViewCreated(view, savedInstanceState)
93104
setupUiComponents()

app/src/main/java/org/simple/clinic/home/overdue/search/OverdueSearchScreen.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import org.simple.clinic.util.RuntimeNetworkStatus
5656
import org.simple.clinic.util.UserClock
5757
import org.simple.clinic.util.applyInsetsBottomPadding
5858
import org.simple.clinic.util.applyStatusBarPadding
59+
import org.simple.clinic.util.lightStatusBar
5960
import org.simple.clinic.util.unsafeLazy
6061
import org.simple.clinic.widgets.PagingItemAdapter
6162
import org.simple.clinic.widgets.UiEvent
@@ -217,6 +218,16 @@ class OverdueSearchScreen : BaseScreen<
217218
context.injector<Injector>().inject(this)
218219
}
219220

221+
override fun onResume() {
222+
super.onResume()
223+
lightStatusBar(enabled = true)
224+
}
225+
226+
override fun onStop() {
227+
lightStatusBar(enabled = false)
228+
super.onStop()
229+
}
230+
220231
override fun bindView(layoutInflater: LayoutInflater, container: ViewGroup?): ScreenOverdueSearchBinding {
221232
return ScreenOverdueSearchBinding.inflate(layoutInflater, container, false)
222233
}

app/src/main/java/org/simple/clinic/instantsearch/InstantSearchScreen.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import org.simple.clinic.summary.PatientSummaryScreenKey
5656
import org.simple.clinic.util.UtcClock
5757
import org.simple.clinic.util.applyInsetsBottomPadding
5858
import org.simple.clinic.util.applyStatusBarPadding
59+
import org.simple.clinic.util.lightStatusBar
5960
import org.simple.clinic.util.setFragmentResultListener
6061
import org.simple.clinic.widgets.PagingItemAdapter
6162
import org.simple.clinic.widgets.UiEvent
@@ -204,7 +205,6 @@ class InstantSearchScreen :
204205

205206
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
206207
super.onViewCreated(view, savedInstanceState)
207-
208208
appbar.applyStatusBarPadding()
209209
newPatientContainer.applyInsetsBottomPadding()
210210

@@ -226,6 +226,16 @@ class InstantSearchScreen :
226226
lifecycleEvents.onNext(InstantSearchScreenShown)
227227
}
228228

229+
override fun onResume() {
230+
super.onResume()
231+
lightStatusBar(enabled = true)
232+
}
233+
234+
override fun onStop() {
235+
lightStatusBar(enabled = false)
236+
super.onStop()
237+
}
238+
229239
override fun onDestroyView() {
230240
super.onDestroyView()
231241
subscriptions.clear()

app/src/main/java/org/simple/clinic/main/TheActivity.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import android.annotation.SuppressLint
44
import android.content.Context
55
import android.content.Intent
66
import android.content.res.Configuration
7+
import android.graphics.Color
78
import android.os.Bundle
89
import android.view.WindowManager
10+
import androidx.activity.SystemBarStyle
11+
import androidx.activity.enableEdgeToEdge
912
import androidx.appcompat.app.AppCompatActivity
1013
import androidx.work.ExistingWorkPolicy.REPLACE
1114
import androidx.work.WorkManager
@@ -184,6 +187,10 @@ class TheActivity : AppCompatActivity(), TheActivityUi {
184187
}
185188

186189
override fun onCreate(savedInstanceState: Bundle?) {
190+
enableEdgeToEdge(
191+
statusBarStyle = SystemBarStyle.dark(Color.TRANSPARENT),
192+
navigationBarStyle = SystemBarStyle.dark(Color.TRANSPARENT)
193+
)
187194
super.onCreate(savedInstanceState)
188195
router.onReady(savedInstanceState)
189196
delegate.onRestoreInstanceState(savedInstanceState)

app/src/main/java/org/simple/clinic/newentry/PatientEntryScreen.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ import org.simple.clinic.platform.crash.CrashReporter
6666
import org.simple.clinic.registration.phone.PhoneNumberValidator
6767
import org.simple.clinic.util.applyInsetsBottomPadding
6868
import org.simple.clinic.util.applyStatusBarPadding
69+
import org.simple.clinic.util.lightStatusBar
6970
import org.simple.clinic.util.toOptional
7071
import org.simple.clinic.util.unsafeLazy
7172
import org.simple.clinic.widgets.ProgressMaterialButton
@@ -303,6 +304,16 @@ class PatientEntryScreen : BaseScreen<
303304
colonyOrVillageEditText.setAdapter(villageTypeAheadAdapter)
304305
}
305306

307+
override fun onResume() {
308+
super.onResume()
309+
lightStatusBar(enabled = true)
310+
}
311+
312+
override fun onStop() {
313+
lightStatusBar(enabled = false)
314+
super.onStop()
315+
}
316+
306317
override fun setupUi(inputFields: InputFields) {
307318
// Not sure why, but setting android:nextFocusDown in XML isn't working,
308319
// so doing this manually here.

app/src/main/java/org/simple/clinic/onboarding/OnboardingScreen.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import org.simple.clinic.di.injector
3939
import org.simple.clinic.mobius.DisposableViewEffect
4040
import org.simple.clinic.navigation.v2.Router
4141
import org.simple.clinic.navigation.v2.ScreenKey
42+
import org.simple.clinic.util.lightStatusBar
4243
import org.simple.clinic.util.unsafeLazy
4344
import javax.inject.Inject
4445

@@ -60,6 +61,16 @@ class OnboardingScreen : Fragment(), OnboardingUi {
6061
context.injector<Injector>().inject(this)
6162
}
6263

64+
override fun onResume() {
65+
super.onResume()
66+
lightStatusBar(enabled = true)
67+
}
68+
69+
override fun onStop() {
70+
lightStatusBar(enabled = false)
71+
super.onStop()
72+
}
73+
6374
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
6475
return ComposeView(requireContext()).apply {
6576
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)

0 commit comments

Comments
 (0)