Skip to content

Commit

Permalink
Merge pull request #181 from SOPT-all/fix/#163-register-ime-padding
Browse files Browse the repository at this point in the history
[FIX/#163] imePadding 키보드 이슈 해결
angryPodo authored Jan 24, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents 4f66d36 + 4d5cb7f commit 4b235d9
Showing 3 changed files with 28 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -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()
}
Original file line number Diff line number Diff line change
@@ -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,
Original file line number Diff line number Diff line change
@@ -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)
)
}
}

0 comments on commit 4b235d9

Please sign in to comment.