Logo

dev-resources.site

for different kinds of informations.

Flat list horizontal all Items perfectly visible in iOS not in android ContentContainerStyle

Published at
1/14/2025
Categories
reactnative
javascript
flatlist
Author
Vaibhav Shukla
Categories
3 categories in total
reactnative
open
javascript
open
flatlist
open
Flat list horizontal all Items perfectly visible in iOS not in android ContentContainerStyle

Here is A Code

 <FlatList
                horizontal={isHorizontal}
                contentContainerStyle={{
                    // width: isHorizontal ? 274 : '100%',
                    paddingHorizontal:10
                }}
                overScrollMode="never"
                style={styles.frameGroup}
                data={[1, 2, 3, 4, 5]}
                renderItem={renderItem2}
                ItemSeparatorComponent={
                    <View
                        style={{
                            width: isHorizontal ? 24 : 0,
                            height: !isHorizontal ? 60 : 0,
                        }}
                    />
                }
            />

UI View :
Image description

Expected View :

Image description

Here is Code after removing width from contentContainer style

import React from 'react';
import { FlatList, View, Text, StyleSheet, Dimensions } from 'react-native';

const data = [...Array(10).keys()].map((_, i) => ({ id: i, name: `Item ${i + 1}` }));
const ITEM_WIDTH = 100;

const YourComponent = ({ item }) => (
  <View style={styles.item}>
    <Text>{item.name}</Text>
  </View>
);

const App = () => {
  return (
    <FlatList
      data={data}
      horizontal
      keyExtractor={(item) => item.id.toString()}
      renderItem={({ item }) => <YourComponent item={item} />}
      showsHorizontalScrollIndicator={false}
      contentContainerStyle={{ paddingHorizontal: 10 }}
      ItemSeparatorComponent={() => <View style={{ width: 10 }} />}
      getItemLayout={(data, index) => ({
        length: ITEM_WIDTH,
        offset: ITEM_WIDTH * index,
        index,
      })}
    />
  );
};

const styles = StyleSheet.create({
  item: {
    width: ITEM_WIDTH,
    height: 100,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#f0f0f0',
    marginHorizontal: 5,
  },
});

export default App;

Why It Works After Commenting width:

  • The FlatList dynamically calculates the width of the content based on its children.
  • No padding offsets are added, so there's no risk of incorrect scrollable area calculation.
  • As a result, horizontal scrolling works as expected.

Featured ones: