From 19f0512076e0687cb31f2d45e5a3e980b7263eee Mon Sep 17 00:00:00 2001 From: MinJae Han Date: Fri, 24 Jan 2025 11:04:35 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[FIX/#163]=20imePadding=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/register/RegisterStepOneScreen.kt | 10 ++++------ .../presentation/register/component/RegisterTooltip.kt | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) 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 48ab1702..3aee54f4 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.positionAwareImePadding 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) + .positionAwareImePadding() .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) ) } } From 6acb287d2a8a6fe106d6fef272bf4c671b24a572 Mon Sep 17 00:00:00 2001 From: MinJae Han Date: Fri, 24 Jan 2025 11:05:30 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[FEAT/#163]=20=ED=82=A4=EB=B3=B4=EB=93=9C?= =?UTF-8?q?=20=ED=8C=A8=EB=94=A9=20=EC=9D=B5=EC=8A=A4=ED=85=90=EC=85=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spoony/core/util/extension/ModifierExt.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) 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..e960806d 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.positionAwareImePadding() = 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() +} From 4d5cb7f99ed8f4828e519661fa7105aa2cc48bc1 Mon Sep 17 00:00:00 2001 From: MinJae Han Date: Fri, 24 Jan 2025 11:44:05 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[MOD/#163]=20=EC=9D=B5=EC=8A=A4=ED=85=90?= =?UTF-8?q?=EC=85=98=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/spoony/spoony/core/util/extension/ModifierExt.kt | 2 +- .../spoony/presentation/register/RegisterStepOneScreen.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 e960806d..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 @@ -78,7 +78,7 @@ fun Modifier.spoonyGradient( } } -fun Modifier.positionAwareImePadding() = composed { +fun Modifier.advancedImePadding() = composed { var consumePadding by remember { mutableStateOf(0) } onGloballyPositioned { coordinates -> val rootCoordinate = coordinates.findRootCoordinates() 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 16cb63fa..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 @@ -33,7 +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.positionAwareImePadding +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,7 +70,7 @@ fun RegisterStepOneScreen( modifier = modifier .fillMaxSize() .addFocusCleaner(focusManager) - .positionAwareImePadding() + .advancedImePadding() .verticalScroll(rememberScrollState()) .padding(top = 22.dp, bottom = 17.dp) ) {