From 8cc9cbb3831c8442c0b0e1b4076bd2c94c67e0f0 Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Mon, 22 Jun 2026 21:53:22 +0900 Subject: [PATCH] =?UTF-8?q?fix(android):=20=ED=82=A4=EB=B3=B4=EB=93=9C(IME?= =?UTF-8?q?)=EA=B0=80=20=EC=9E=85=EB=A0=A5=ED=8F=BC=20=EA=B0=80=EB=A6=AC?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=E2=80=94=20WebView=EB=A5=BC?= =?UTF-8?q?=20=ED=82=A4=EB=B3=B4=EB=93=9C=20=EC=9C=84=EB=A1=9C=20=EB=A6=AC?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=EC=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MainActivity 인셋 리스너에 IME 인셋 반영: 하단 패딩 = max(시스템바, 키보드 높이) → 키보드가 뜨면 WebView가 키보드 위로 줄어들어 입력 모달이 재배치됨 - AndroidManifest activity에 windowSoftInputMode=adjustResize 추가 - 모달은 기존 max-height+overflow로 스크롤되어 모든 필드 확인 가능 - 네이티브 전용(웹/PC 무영향) → APK 재빌드 필요 Co-Authored-By: Claude Opus 4.8 --- android/app/src/main/AndroidManifest.xml | 1 + .../app/src/main/java/kr/sblog/slimbudget/MainActivity.java | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6050f3f..84ae199 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ android:label="@string/title_activity_main" android:theme="@style/AppTheme.NoActionBarLaunch" android:launchMode="singleTask" + android:windowSoftInputMode="adjustResize" android:exported="true"> diff --git a/android/app/src/main/java/kr/sblog/slimbudget/MainActivity.java b/android/app/src/main/java/kr/sblog/slimbudget/MainActivity.java index 8d4cf54..7087d99 100644 --- a/android/app/src/main/java/kr/sblog/slimbudget/MainActivity.java +++ b/android/app/src/main/java/kr/sblog/slimbudget/MainActivity.java @@ -23,7 +23,11 @@ public class MainActivity extends BridgeActivity { final View content = findViewById(android.R.id.content); ViewCompat.setOnApplyWindowInsetsListener(content, (v, windowInsets) -> { Insets bars = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); - v.setPadding(bars.left, bars.top, bars.right, bars.bottom); + Insets ime = windowInsets.getInsets(WindowInsetsCompat.Type.ime()); + // 키보드(IME)가 올라오면 그 높이만큼 하단 패딩 → WebView가 키보드 위로 줄어든다. + // (입력 모달이 키보드에 가려지지 않고, 포커스된 입력칸이 보이도록 재배치됨) + int bottom = Math.max(bars.bottom, ime.bottom); + v.setPadding(bars.left, bars.top, bars.right, bottom); return WindowInsetsCompat.CONSUMED; }); ViewCompat.requestApplyInsets(content);