diff --git a/android/feature/account/src/main/kotlin/se/hagstedt/kvitt/feature/account/AccountEditorScreen.kt b/android/feature/account/src/main/kotlin/se/hagstedt/kvitt/feature/account/AccountEditorScreen.kt index 11c3ac7..0c78718 100644 --- a/android/feature/account/src/main/kotlin/se/hagstedt/kvitt/feature/account/AccountEditorScreen.kt +++ b/android/feature/account/src/main/kotlin/se/hagstedt/kvitt/feature/account/AccountEditorScreen.kt @@ -8,8 +8,10 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -165,7 +167,7 @@ private fun EditorForm(ui: AccountEditorUi, me: User, partner: User, actions: Ac if (ui.loaded && ui.editing == null && ui.online) focus.requestFocus() } Column( - Modifier.fillMaxSize().padding(padding).verticalScroll(rememberScrollState()).padding(horizontal = spacing.gutter, vertical = spacing.s1), + Modifier.fillMaxSize().padding(padding).consumeWindowInsets(padding).imePadding().verticalScroll(rememberScrollState()).padding(horizontal = spacing.gutter, vertical = spacing.s1), verticalArrangement = Arrangement.spacedBy(KvittDimens.dialogGap), ) { if (!ui.online) { diff --git a/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/categories/CategoryEditorScreen.kt b/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/categories/CategoryEditorScreen.kt index 1e35d4a..f90e38c 100644 --- a/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/categories/CategoryEditorScreen.kt +++ b/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/categories/CategoryEditorScreen.kt @@ -5,8 +5,10 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -122,6 +124,8 @@ fun CategoryEditorContent(state: CategoryEditorState?, actions: CategoryEditorAc Modifier .fillMaxSize() .padding(padding) + .consumeWindowInsets(padding) + .imePadding() .verticalScroll(rememberScrollState()) .padding(horizontal = KvittTheme.spacing.gutter, vertical = KvittTheme.spacing.s2), verticalArrangement = Arrangement.spacedBy(KvittTheme.spacing.detailGap), diff --git a/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/recurring/RecurringEditorScreen.kt b/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/recurring/RecurringEditorScreen.kt index 680d679..cf20571 100644 --- a/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/recurring/RecurringEditorScreen.kt +++ b/android/feature/settings/src/main/kotlin/se/hagstedt/kvitt/feature/settings/recurring/RecurringEditorScreen.kt @@ -8,9 +8,11 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState @@ -186,7 +188,9 @@ fun RecurringEditorContent(state: RecurringEditorState?, actions: RecurringEdito ) { padding -> if (state == null) return@KvittScaffold ProvideHousehold(state.options.me, state.options.partner) { - EditorBody(state, actions, Modifier.padding(padding)) + // The keyboard shrinks the scrolling body (adjustResize, as S-7) so a focused field stays above it; consuming the + // scaffold padding first keeps the bottom bar or navigation inset from counting twice. + EditorBody(state, actions, Modifier.padding(padding).consumeWindowInsets(padding).imePadding()) when (state.sheet) { EditorSheet.Category -> ModalBottomSheet(actions.onCloseSheet) { CategoryGrid(state.options.categories, state.form.categoryId, { actions.onCategory(it.id) }, Modifier.padding(KvittTheme.spacing.gutter))