Прежде всего позвольте мне поделиться своим кодом вместе с текущим результатом того, что я делаю.
return(
<DismissKeyBoard>
<View>
<Formik
initialValues ={{user: 'User ', place: '', description: '', comments: '',datePosted: new Date(), location: '', eventDate: ''}}
onSubmit ={logInfo}>
{props =>(
<SafeAreaView style={styles.container}>
<ScrollView>
<View style={styles.form}>
<Text style={styles.text}>Pick a place for the event</Text>
<GooglePlacesAutocomplete
placeholder='Insert place to find'
minLength={2}
keyboardAppearance={'light'}
fetchDetails={false}
onPress={(data, details = null) => { // 'details' is provided when fetchDetails = true
{props.values.location= data.description}
console.log("hello",props.values.location);
}}
styles={{
textInputContainer: {
backgroundColor: 'rgba(0,0,0,0)',
borderTopWidth: 0,
borderBottomWidth:0,
width: '100%',
},
textInput: {
fontSize: 16
},
predefinedPlacesDescription: {
color: '#1faadb',
height:'100%',
},
}}
query={{
key: '',
language: 'en', // language of the results
}}
/>
<View style={styles.container}>
<Text
placeholder= {props.values.user}
onChangeText = {props.handleChange('user')}
values = {props.values.user}
style={styles.text}>{props.values.user}</Text>
<TextInput
placeholder= 'Place (e.g Honolulu)'
onChangeText = {props.handleChange('place')}
values = {props.values.place}
style={styles.text}/>
<TextInput
placeholder= 'Description (e.g This is located...)'
onChangeText = {props.handleChange('description')}
values = {props.values.description}
style={styles.text}/>
<TextInput
placeholder= 'Comment (e.g This is fun because...)'
onChangeText = {props.handleChange('comments')}
values = {props.values.comments}
style={styles.text}/>
<Text style={styles.text} >Pick a date for the event</Text>
<DatePicker
date={props.values.eventDate}
onDateChange={(date) => {props.values.eventDate= date}}
values = {props.values.eventDate} />
{/* <Text style={styles.text}>Location</Text> */}
<View style={styles.viewbtn}>
<TouchableOpacity onPress={props.handleSubmit} style={styles.btn} ><Text style={styles.txtbtn} >Submit</Text></TouchableOpacity>
{/* <Button title="Submit" onPress={props.handleSubmit} /> */}
</View>
</View>
</View>
</ScrollView>
</SafeAreaView>
)}
</Formik>
</View>
</DismissKeyBoard>
)
}
const styles = StyleSheet.create({
container:{
// flex:1,
paddingTop:20,
// margin: 10,
alignItems: 'center'
},
// form:{
// alignItems: 'flex-start',
// paddingTop:40,
// },
text:{
borderBottomWidth: StyleSheet.hairlineWidth,
borderColor: 'black',
paddingTop:15,
},
viewbtn:{
paddingTop:15,
},
btn:{
backgroundColor: 'purple',
padding:20,
margin:20,
width: 100,
justifyContent: 'center',
alignItems: 'center',
borderRadius : 5,
},
txtbtn:{
fontWeight: 'bold',
fontSize: 14,
color: 'orange'
},
})
проблема
Когда я нажимаю на GooglePlacesAutoComplete, я могу видеть список мест, но затем, когда я нажимаю на любое из найденных мест, он не принимает ввод.
Наблюдения
- Когда
<GooglePlacesAutocomplete />
НЕ находится внутри ScrollView, я не вижу предложения. - Когда
<GooglePlacesAutocomplete />
НЕ находится внутри других <View></View>
работает отлично.
Предупреждение
С помощью приведенного выше кода я также получаю это предупреждение "Виртуализированные списки никогда не должны быть вложены в простые ScrollViews с той же ориентацией - используйте вместо этого другой контейнер с поддержкой VirtualizedList. "
Желаемый результат
Я бы хотел, чтобы компонент <GooglePlacesAutocomplete />
отображался сверху формы, без каких-либо странных ошибок и его функциональных возможностей, работающих должным образом. (Предпочтительно, как показано на рисунке)
Редактировать
Я импортирую import { GooglePlacesAutocomplete } from 'react-native-google-places-autocomplete';
из https://github.com/FaridSafi/react-native-google-places-autocomplete
I Я не эксперт в GUI, объяснение будет очень оценено и приветствовано. Если потребуется дополнительная информация, я буду рад предоставить ее.
Заранее спасибо.