The session/chat screen's KeyboardAvoidingView used behavior={undefined}
on Android, relying entirely on the native android:windowSoftInputMode
adjustResize (set in AndroidManifest.xml) to shrink the window and push
the agent/model toolbar + composer above the keyboard.
Since the app adopted Expo's mandatory edge-to-edge display, Android no
longer resizes the window when the keyboard opens (the system assumes
insets are handled dynamically), so adjustResize became a no-op —
leaving the toolbar and input completely hidden behind the keyboard.
Switch to behavior="padding" on both platforms so KeyboardAvoidingView
pushes the composer up using its own JS-measured keyboard height,
independent of native window resize.
Co-authored-by: test <test@test.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -593,7 +593,19 @@ export default function SessionScreen() {
|
||||
|
||||
<KeyboardAvoidingView
|
||||
style={[s.container, isDark && s.containerDark]}
|
||||
behavior={Platform.OS === "ios" ? "padding" : undefined}
|
||||
// Both platforms use "padding" so the composer/toolbar is pushed up
|
||||
// above the keyboard via JS-measured keyboard height.
|
||||
//
|
||||
// Android previously relied on the native android:windowSoftInputMode
|
||||
// (adjustResize, see AndroidManifest.xml) with behavior={undefined}
|
||||
// to let the OS resize the window (see #70/#53). Since adopting
|
||||
// Expo's mandatory edge-to-edge display, Android no longer resizes
|
||||
// the window when the keyboard opens — the system assumes insets are
|
||||
// handled dynamically — so adjustResize became a no-op and the
|
||||
// bottom toolbar + input were left completely hidden behind the
|
||||
// keyboard (#147). "padding" restores avoidance without depending
|
||||
// on native resize.
|
||||
behavior="padding"
|
||||
keyboardVerticalOffset={Platform.OS === "ios" ? 90 : 0}
|
||||
>
|
||||
{/* Session info pulldown */}
|
||||
|
||||
Reference in New Issue
Block a user