해결된 질문
작성
·
69
0
https://github.com/znehraks/react-native-basic/blob/main/app/post/%5Bid%5D.tsx
이 코드인데, Android Emulator에서
KeyboardAwareScrollView가 정상동작하지 않습니다.
import AuthRoute from '@/components/AuthRoute';
import FeedItem from '@/components/FeedItem';
import InputField from '@/components/InputField';
import { colors } from '@/constants';
import useGetPost from '@/hooks/queries/useGetPost';
import { useLocalSearchParams } from 'expo-router';
import { Pressable, SafeAreaView, ScrollView, StyleSheet, Text, View } from 'react-native';
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
export default function PostDetailScreen() {
const { id } = useLocalSearchParams();
const { data: post, isPending, isError } = useGetPost(Number(id));
if (isPending || isError) {
return <></>;
}
return (
<AuthRoute>
<SafeAreaView style={styles.container}>
<KeyboardAwareScrollView contentContainerStyle={styles.awareScrollViewContainer}>
<ScrollView contentContainerStyle={styles.scrollViewContainer}>
<View style={{ marginTop: 12 }}>
<FeedItem post={post} isDetail />
<Text style={styles.commentCount}>댓글 {post.commentCount}개</Text>
</View>
</ScrollView>
<View style={styles.commentInputContainer}>
<InputField
rightChild={
<Pressable style={styles.inputButtonContainer}>
<Text style={styles.inputButtonText}>등록</Text>
</Pressable>
}
/>
</View>
</KeyboardAwareScrollView>
</SafeAreaView>
</AuthRoute>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.WHITE,
},
awareScrollViewContainer: {
flex: 1,
backgroundColor: colors.GRAY_200,
},
scrollViewContainer: {
backgroundColor: colors.GRAY_200,
},
commentCount: {
marginTop: 12,
backgroundColor: colors.WHITE,
paddingVertical: 12,
paddingHorizontal: 16,
fontSize: 16,
fontWeight: 'bold',
},
commentInputContainer: {
width: '100%',
borderTopColor: colors.GRAY_200,
borderTopWidth: StyleSheet.hairlineWidth,
backgroundColor: colors.WHITE,
padding: 16,
bottom: 0,
position: 'absolute',
},
inputButtonContainer: {
backgroundColor: colors.ORANGE_600,
padding: 8,
borderRadius: 5,
},
inputButtonText: {
color: colors.WHITE,
fontWeight: 'bold',
},
});
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 유정민님.
KeyboardAwareScrollView
가 Android Emulator에서 정상 동작하지 않는 문제는 다양한 원인이 있을 수 있습니다. KeyboardAwareScrollView
는 키보드가 화면에 표시될 때 자동으로 스크롤뷰를 조정해주는 기능을 제공합니다. 하지만 Android 환경에서는 특정 조건에서 제대로 작동하지 않을 수 있습니다.
KeyboardAwareScrollView
의 래핑 위치:
KeyboardAwareScrollView
가 ScrollView
를 감싸고 있습니다. KeyboardAwareScrollView
의 감싸고 있는 위치가 올바르지 않으면 의도대로 스크롤이 동작하지 않을 수 있습니다. 최상위 View 레벨에 배치하여 작동 여부를 확인해 보세요.중복 ScrollView 구성:
ScrollView
를 KeyboardAwareScrollView
내부에 중복해서 사용하게 되면 충돌이 일어날 수 있습니다. 두 구성 요소가 서로 영향을 미치지 않도록 KeyboardAwareScrollView
만을 사용하는 것을 추천합니다.키보드 익숙치 않은 동작 설정 확인:
android:windowSoftInputMode
설정에서 문제가 발생합니다. AndroidManifest.xml에서 관련 설정을 검토하여 앱의 키보드 동작이 적절히 설정되어 있는지 확인하셔야 합니다. 일반적으로 adjustPan
이나 adjustResize
가 사용됩니다.emulator의 해상도 및 재시작:
이 안내가 문제 해결에 도움이 되기를 바랍니다. 추가적인 질문이 있거나 문제가 계속 발생한다면 더 많은 정보를 제공해주시면 추가 도움을 드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
같은 상황에서 안드로이드 에뮬레이터에서는 키보드에 InpufField가 여전히 가려진 채로 있습니다.