Skip to content

NR-154 해상도가 낮은 기기에서 키패드가 일부 노출되지 않는 이슈 수정#155

Merged
juhwankim-dev merged 2 commits into
developfrom
feature/NR-154
Jun 3, 2026
Merged

NR-154 해상도가 낮은 기기에서 키패드가 일부 노출되지 않는 이슈 수정#155
juhwankim-dev merged 2 commits into
developfrom
feature/NR-154

Conversation

@juhwankim-dev

Copy link
Copy Markdown
Member

비밀번호 입력 화면과 타이머 화면에서

저해상도의 경우 키패드가 일부 잘리는 케이스가 있어 수정함!

왜?
상단 영역이 65%를 고정으로 차지하게되있고 키패드 영역이 35%를 차지하게되어있어 저해상도에서는 화면이 잘림

어떻게?
상단 Column을 weight(1f)로 변경하고, 키패드는 외부 Column 직속으로 옮겨 본연의 높이를 보장
어떻게?
보여주어야 할 컨텐츠가 많아서 이 화면은 어쩔수없이 스크롤을 넣었음.
@juhwankim-dev juhwankim-dev self-assigned this Jun 3, 2026
@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown

🤖 AI Code Review (Gemini)

안녕하세요! Pull Request에 대한 코드 리뷰를 시작하겠습니다.

이번 PR은 저해상도 기기에서 키패드가 일부 노출되지 않는 이슈를 수정하는 것을 목표로 하고 있으며, Compose 레이아웃의 유연성을 개선하는 방향으로 변경되었습니다. 전반적으로 문제 해결에 적합한 좋은 변경사항이라고 생각합니다.


1. presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/CheckPasswordScreen.kt

변경 사항 요약:

  • 상단 ColumnfillMaxHeight(0.65f)weight(1f)로 변경했습니다.
  • PinKeypad를 감싸던 불필요한 Column을 제거하고, PinKeypad와 관련 Spacer들을 메인 Column의 직접적인 자식으로 배치했습니다.
  • PinKeypad 아래의 Spacer(modifier = Modifier.weight(1f))를 제거했습니다.

리뷰:

💡 Suggestion (코드 품질)

  • 유연한 레이아웃 개선: fillMaxHeight(0.65f) 대신 weight(1f)를 사용하여 상단 콘텐츠 영역이 남은 공간을 유연하게 차지하도록 변경한 것은 매우 좋은 개선입니다. 이는 다양한 화면 크기와 해상도에 더 잘 적응할 수 있는 Compose 레이아웃의 모범 사례입니다.
  • 레이아웃 계층 단순화: PinKeypad를 감싸던 불필요한 Column을 제거하여 레이아웃 계층을 단순화했습니다. 이는 렌더링 성능에 미미하게 긍정적인 영향을 줄 수 있으며, 코드 가독성을 높입니다.

이 변경사항은 저해상도 기기에서 키패드가 잘리는 문제를 해결하는 데 효과적일 것으로 보입니다.


2. presentation/src/main/java/com/nextroom/nextroom/presentation/ui/password/compose/SetPasswordScreen.kt

변경 사항 요약:

  • CheckPasswordScreen.kt와 동일한 변경사항이 적용되었습니다.

리뷰:

💡 Suggestion (코드 품질)

  • CheckPasswordScreen.kt와 동일하게, weight(1f) 사용 및 레이아웃 계층 단순화는 이 화면에서도 유연성과 가독성을 크게 향상시킵니다. 일관된 방식으로 유사한 문제를 해결한 점이 좋습니다.

3. presentation/src/main/java/com/nextroom/nextroom/presentation/ui/tutorial/timer/compose/TutorialTimerScreen.kt

변경 사항 요약:

  • @SuppressLint("UnusedBoxWithConstraintsScope") 어노테이션을 추가했습니다.
  • arcMaxHeightgapAfterArc 계산에 coerceAtLeast(0.dp)를 적용하여 음수 값을 방지했습니다.
  • "Arc + timer text + hint info section"과 "KeypadSection"을 새로운 Column으로 묶고, 이 Columnweight(1f)verticalScroll(rememberScrollState())를 적용했습니다.
  • KeypadSection 앞의 Spacer(modifier = Modifier.weight(1f))Spacer(modifier = Modifier.height(40.dp))로 변경했습니다.

리뷰:

💡 Suggestion (코드 품질 & 잠재적 버그 해결)

  • coerceAtLeast(0.dp) 적용: arcMaxHeightgapAfterArc 계산 결과가 음수가 되는 것을 방지하기 위해 coerceAtLeast(0.dp)를 사용한 것은 매우 중요하고 올바른 수정입니다. 저해상도 기기에서 레이아웃 계산 시 발생할 수 있는 잠재적인 크래시나 예기치 않은 UI 문제를 방지합니다.
  • 스크롤 가능 영역 도입: 콘텐츠(특히 키패드)가 화면 높이를 초과할 경우를 대비하여 verticalScroll을 도입한 것은 저해상도 기기에서의 가시성 문제를 해결하는 가장 확실한 방법입니다. weight(1f)를 사용하여 스크롤 가능한 영역이 남은 공간을 채우도록 한 것도 적절합니다.
  • @SuppressLint("UnusedBoxWithConstraintsScope"): BoxWithConstraintsScopemaxHeightmaxWidth를 변수로 추출하여 사용했기 때문에 발생하는 Lint 경고를 억제하는 것은 합리적입니다.

💡 Suggestion (코드 가독성)

  • KeypadSection 앞의 Spacerweight(1f)에서 height(40.dp)로 변경한 것은 스크롤 가능한 영역 내에서 키패드와 상단 콘텐츠 사이의 고정된 간격을 유지하려는 의도로 보입니다. 이는 디자인 의도에 따라 적절한 변경입니다.

종합 의견:

이번 Pull Request의 변경사항들은 저해상도 기기에서 발생하는 UI 잘림 현상을 해결하기 위한 매우 효과적이고 적절한 접근 방식입니다. Compose의 유연한 레이아웃 기능을 잘 활용하고 있으며, 잠재적인 레이아웃 오류를 방지하기 위한 방어적인 코드(coerceAtLeast(0.dp))도 포함되어 있습니다.

전반적으로 코드 품질, 잠재적 버그 해결, 프로젝트 가이드라인 준수 측면에서 긍정적인 변경사항입니다.

승인해도 좋습니다.


terminal-notifier -title "Claude Code" -message "코드 리뷰가 완료되었습니다." -sound default


This review was automatically generated using Gemini AI. Please use your judgment when addressing the feedback.

@juhwankim-dev juhwankim-dev merged commit 3e548bc into develop Jun 3, 2026
1 check passed
@juhwankim-dev juhwankim-dev deleted the feature/NR-154 branch June 3, 2026 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant