//the size of the TabView will follow its parent-container's size. import * as React from 'react'; import { View, Text, useWindowDimensions, StyleSheet, Image, ImageSourcePropType } from 'react-native'; import { TabView, SceneMap, TabBar } from 'react-native-tab-view'; import { FlashList } from '@shopify/flash-list'; export interface TabItem { imgURL: ImageSourcePropType; date: string; time: string; chargeStationName: string; chargeStationAddress: string; distance: string; } interface TabViewComponentProps { titles: string[]; tabItems: TabItem[]; } const TabViewComponent: React.FC = ({ titles, tabItems }) => { const layout = useWindowDimensions(); //tab 1 const FirstRoute = () => ( { return ( {`${item.date} - ${item.time}`} {item.chargeStationName} {item.chargeStationAddress} {item.distance} ); }} estimatedItemSize={10} /> ); //tab 2 const SecondRoute = () => ( ); const renderScene = SceneMap({ firstRoute: FirstRoute, secondRoute: SecondRoute }); const [routes] = React.useState([ { key: 'firstRoute', title: titles[0] }, { key: 'secondRoute', title: titles[1] } ]); const [index, setIndex] = React.useState(0); const renderTabBar = (props: any) => ( ( {route.title} )} indicatorStyle={{ backgroundColor: '#025c72' }} style={{ backgroundColor: 'white', // borderTopWidth: 4, borderColor: '#DBE4E8', elevation: 0, marginHorizontal: 15, borderBottomWidth: 0.5 }} /> ); return ( ); }; export default TabViewComponent; const styles = StyleSheet.create({ container: { flexDirection: 'row' }, image: { width: 100, height: 100, margin: 15, borderRadius: 10 }, textContainer: { flexDirection: 'column', gap: 8, marginTop: 20 } });