Метод 1
Добавьте flex: 1
к родительскому представлению:
<InstantSearch style={{ flex: 1 }}>
В вашем InstantSearch
убедитесь, что вы передали стиль внешнему виду:
const InstantSearch = props => <View style={props.style}>...
Метод 2
Переместите SearchBox
в ListHeaderComponent
опору FlatList
:
<FlatList ListHeaderComponent={() => <SearchBox />} ...
Метод 3
Дайте SearchBox
следующий стиль:
{ position: 'absolute', zIndex: 1 }
См. Способ 1 о том, как передать его в завернутый View
.Если SearchBox
из стороннего модуля, просто оберните его с помощью View
:
<View style={{ position: 'absolute', zIndex: 1 }}>
<SearchBox />
</View>
Метод 4
Используйте SectionList
вместо FlatList
, чтобы избежать SearchBox
прокручивается вниз (как в методе 2).
<SectionList
renderSectionHeader={SearchBox}
sections={[{ data: hits }]}
У него немного другой API , поэтому я изменил форму данных, чтобы перейти к sections
prop.Могут потребоваться дальнейшие изменения.
РЕДАКТИРОВАТЬ
У вас есть дополнительный View
, который вы не включили в OP, и вы не переместили SearchBox
в renderSectionHeader
.Все, что занимает место сверху, должно быть перемещено с RootContainer
на ConferenceList
:
<SectionList
sections={groupAndSortConferences(hits)}
renderItem={({ item }) => <ConferenceItem {...item} />}
keyExtractor={item => item.uuid}
ListFooterComponent={<LoadMoreFooter />}
renderSectionHeader={() => (
<View>
{Platform.OS === 'ios' && <View style={{ height: 24, backgroundColor: '#FFCA04' }} />}
<SearchBox />
</View>
)}
/>
Жестко закодированный View
, который вы добавили для ios, чтобы заменить строку состояния, хотя и кажется странным, но это отдельная проблема.