From 212e4d8806fee346fdf02ac59266e65bbca28157 Mon Sep 17 00:00:00 2001 From: juhwankim-dev Date: Thu, 4 Jun 2026 01:03:00 +0900 Subject: [PATCH 1/2] =?UTF-8?q?NR-154=20=ED=95=B4=EC=83=81=EB=8F=84?= =?UTF-8?q?=EA=B0=80=20=EB=82=AE=EC=9D=80=20=EA=B8=B0=EA=B8=B0=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=82=A4=ED=8C=A8=EB=93=9C=EA=B0=80=20=EC=9D=BC?= =?UTF-8?q?=EB=B6=80=20=EB=85=B8=EC=B6=9C=EB=90=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20=EC=9D=B4=EC=8A=88=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 왜? 상단 영역이 65%를 고정으로 차지하게되있고 키패드 영역이 35%를 차지하게되어있어 저해상도에서는 화면이 잘림 어떻게? 상단 Column을 weight(1f)로 변경하고, 키패드는 외부 Column 직속으로 옮겨 본연의 높이를 보장 --- .../password/compose/CheckPasswordScreen.kt | 26 ++++++++----------- .../ui/password/compose/SetPasswordScreen.kt | 24 +++++++---------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/CheckPasswordScreen.kt b/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/CheckPasswordScreen.kt index c9f986a4..42c9c989 100644 --- a/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/CheckPasswordScreen.kt +++ b/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/CheckPasswordScreen.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -51,7 +50,7 @@ fun CheckPasswordScreen( Column( modifier = Modifier .fillMaxWidth() - .fillMaxHeight(0.65f), + .weight(1f), horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(modifier = Modifier.weight(1f)) @@ -73,19 +72,16 @@ fun CheckPasswordScreen( ) Spacer(modifier = Modifier.weight(1f)) } - Column(modifier = Modifier.fillMaxSize()) { - Spacer(modifier = Modifier.height(28.dp)) - PinKeypad( - onKeyClick = onKeyClick, - onBackspaceClick = onBackspaceClick, - onBiometricClick = if (showBiometric) onBiometricClick else null, - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 20.dp) - ) - Spacer(modifier = Modifier.weight(1f)) - Spacer(modifier = Modifier.height(42.dp)) - } + Spacer(modifier = Modifier.height(28.dp)) + PinKeypad( + onKeyClick = onKeyClick, + onBackspaceClick = onBackspaceClick, + onBiometricClick = if (showBiometric) onBiometricClick else null, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp) + ) + Spacer(modifier = Modifier.height(42.dp)) } } } diff --git a/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/SetPasswordScreen.kt b/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/SetPasswordScreen.kt index 274854cf..9852fff3 100644 --- a/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/SetPasswordScreen.kt +++ b/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/SetPasswordScreen.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -58,7 +57,7 @@ fun SetPasswordScreen( Column( modifier = Modifier .fillMaxWidth() - .fillMaxHeight(0.65f), + .weight(1f), horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(modifier = Modifier.weight(1f)) @@ -80,18 +79,15 @@ fun SetPasswordScreen( ) Spacer(modifier = Modifier.weight(1f)) } - Column(modifier = Modifier.fillMaxSize()) { - Spacer(modifier = Modifier.height(28.dp)) - PinKeypad( - onKeyClick = onKeyClick, - onBackspaceClick = onBackspaceClick, - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 20.dp) - ) - Spacer(modifier = Modifier.weight(1f)) - Spacer(modifier = Modifier.height(42.dp)) - } + Spacer(modifier = Modifier.height(28.dp)) + PinKeypad( + onKeyClick = onKeyClick, + onBackspaceClick = onBackspaceClick, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 20.dp) + ) + Spacer(modifier = Modifier.height(42.dp)) } } } From 8e5f225e1582f9cc9955f2f4664ee3d04a7edc1f Mon Sep 17 00:00:00 2001 From: juhwankim-dev Date: Thu, 4 Jun 2026 01:27:57 +0900 Subject: [PATCH 2/2] =?UTF-8?q?NR-154=20=ED=95=B4=EC=83=81=EB=8F=84?= =?UTF-8?q?=EA=B0=80=20=EB=82=AE=EC=9D=80=20=EA=B8=B0=EA=B8=B0=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=82=A4=ED=8C=A8=EB=93=9C=EA=B0=80=20=EC=9D=BC?= =?UTF-8?q?=EB=B6=80=20=EB=85=B8=EC=B6=9C=EB=90=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20=EC=9D=B4=EC=8A=88=20=EC=88=98=EC=A0=95(=ED=83=80?= =?UTF-8?q?=EC=9D=B4=EB=A8=B8=20=ED=99=94=EB=A9=B4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 어떻게? 보여주어야 할 컨텐츠가 많아서 이 화면은 어쩔수없이 스크롤을 넣었음. --- .../timer/compose/TutorialTimerScreen.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/tutorial/timer/compose/TutorialTimerScreen.kt b/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/tutorial/timer/compose/TutorialTimerScreen.kt index bfd75247..2bbeb2ae 100644 --- a/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/tutorial/timer/compose/TutorialTimerScreen.kt +++ b/presentation/src/main/java/com/nextroom/nextroom/presentation/ui/tutorial/timer/compose/TutorialTimerScreen.kt @@ -1,5 +1,6 @@ package com.nextroom.nextroom.presentation.ui.tutorial.timer.compose +import android.annotation.SuppressLint import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -19,7 +20,9 @@ import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.ModalBottomSheet @@ -46,6 +49,7 @@ import com.nextroom.nextroom.presentation.common.compose.NRColor import com.nextroom.nextroom.presentation.common.compose.NRTypo import com.nextroom.nextroom.presentation.ui.tutorial.timer.TutorialTimerState +@SuppressLint("UnusedBoxWithConstraintsScope") @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) @Composable fun TutorialTimerScreen( @@ -81,9 +85,9 @@ fun TutorialTimerScreen( .alpha(0.15f) ) - val arcMaxHeight = maxHeight * 0.48f - 64.dp - 8.dp + val arcMaxHeight = (maxHeight * 0.48f - 64.dp - 8.dp).coerceAtLeast(0.dp) val arcSize = if (maxWidth < arcMaxHeight) maxWidth else arcMaxHeight - val gapAfterArc = maxHeight * 0.50f - 64.dp - arcSize + val gapAfterArc = (maxHeight * 0.50f - 64.dp - arcSize).coerceAtLeast(0.dp) Column( modifier = Modifier.fillMaxSize(), @@ -96,6 +100,13 @@ fun TutorialTimerScreen( onMemoPositioned = { memoCoords = it } ) + Column( + modifier = Modifier + .fillMaxWidth() + .weight(1f) + .verticalScroll(rememberScrollState()), + horizontalAlignment = Alignment.CenterHorizontally + ) { // Arc + timer text + hint info section (overlaid) Box( modifier = Modifier @@ -160,7 +171,7 @@ fun TutorialTimerScreen( modifier = Modifier.padding(horizontal = 20.dp) ) - Spacer(modifier = Modifier.weight(1f)) + Spacer(modifier = Modifier.height(40.dp)) KeypadSection( onKeyClick = onKeyInput, @@ -170,6 +181,7 @@ fun TutorialTimerScreen( .padding(start = 20.dp, end = 20.dp, bottom = 42.dp) .onGloballyPositioned { keypadCoords = it } ) + } } if (state.showTooltips) {