diff --git a/app/src/main/java/com/spoony/spoony/core/util/extension/ModifierExt.kt b/app/src/main/java/com/spoony/spoony/core/util/extension/ModifierExt.kt index 3d4458e1..96e61734 100644 --- a/app/src/main/java/com/spoony/spoony/core/util/extension/ModifierExt.kt +++ b/app/src/main/java/com/spoony/spoony/core/util/extension/ModifierExt.kt @@ -3,8 +3,14 @@ package com.spoony.spoony.core.util.extension import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.consumeWindowInsets +import androidx.compose.foundation.layout.imePadding import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.composed import androidx.compose.ui.draw.drawWithContent @@ -17,7 +23,12 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.clipPath import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.layout.findRootCoordinates +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.layout.positionInWindow +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp import com.spoony.spoony.core.designsystem.theme.black import com.spoony.spoony.core.designsystem.theme.gray500 @@ -66,3 +77,15 @@ fun Modifier.spoonyGradient( drawContent() } } + +fun Modifier.advancedImePadding() = composed { + var consumePadding by remember { mutableStateOf(0) } + onGloballyPositioned { coordinates -> + val rootCoordinate = coordinates.findRootCoordinates() + val bottom = coordinates.positionInWindow().y + coordinates.size.height + + consumePadding = (rootCoordinate.size.height - bottom).toInt() + } + .consumeWindowInsets(PaddingValues(bottom = (consumePadding / LocalDensity.current.density).dp)) + .imePadding() +} diff --git a/app/src/main/java/com/spoony/spoony/presentation/register/RegisterStepOneScreen.kt b/app/src/main/java/com/spoony/spoony/presentation/register/RegisterStepOneScreen.kt index 2e7df1e3..89091d4f 100644 --- a/app/src/main/java/com/spoony/spoony/presentation/register/RegisterStepOneScreen.kt +++ b/app/src/main/java/com/spoony/spoony/presentation/register/RegisterStepOneScreen.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -34,6 +33,7 @@ import com.spoony.spoony.core.designsystem.component.textfield.SpoonyIconButtonT import com.spoony.spoony.core.designsystem.component.textfield.SpoonySearchTextField import com.spoony.spoony.core.designsystem.theme.SpoonyAndroidTheme import com.spoony.spoony.core.util.extension.addFocusCleaner +import com.spoony.spoony.core.util.extension.advancedImePadding import com.spoony.spoony.presentation.register.RegisterViewModel.Companion.MAX_MENU_COUNT import com.spoony.spoony.presentation.register.component.AddMenuButton import com.spoony.spoony.presentation.register.component.CustomDropDownMenu @@ -70,6 +70,7 @@ fun RegisterStepOneScreen( modifier = modifier .fillMaxSize() .addFocusCleaner(focusManager) + .advancedImePadding() .verticalScroll(rememberScrollState()) .padding(top = 22.dp, bottom = 17.dp) ) { @@ -112,11 +113,8 @@ fun RegisterStepOneScreen( onMenuAdd = viewModel::addMenu ) - Spacer( - modifier = Modifier - .weight(1f) - .defaultMinSize(37.dp) - ) + Spacer(modifier = Modifier.weight(1f)) + Spacer(modifier = Modifier.height(20.dp)) NextButton( enabled = isNextButtonEnabled, diff --git a/app/src/main/java/com/spoony/spoony/presentation/register/component/RegisterTooltip.kt b/app/src/main/java/com/spoony/spoony/presentation/register/component/RegisterTooltip.kt index 13472066..c3f68fb2 100644 --- a/app/src/main/java/com/spoony/spoony/presentation/register/component/RegisterTooltip.kt +++ b/app/src/main/java/com/spoony/spoony/presentation/register/component/RegisterTooltip.kt @@ -60,7 +60,7 @@ fun RegisterTooltip( imageVector = ImageVector.vectorResource(id = R.drawable.ic_register_tooltip_arrow), contentDescription = null, tint = Color.Unspecified, - modifier = Modifier.offset(y = (-5).dp).padding(end = 8.dp) + modifier = Modifier.offset(y = (-5).dp).padding(end = 12.dp) ) } }