Вы можете использовать свойство flex и ширину null.
при условии, что у вас есть функция renderitem и максимум 4 столбца, вам понадобится несколько "фиктивных элементов" в ваших данных плоского списка
<FlatList
style={{flex:1}}
data={[1,2,3,4,dummy,dummy,3,4,1,2,dummy,dummy]}
renderItem={this.renderItem}
numColumns={4}
/>
renderItem = ({ item, index }) => {
if(item==='dummy'){return <View/>}
return (
<View style={{height:100,width:null,flex:1,backgroundcolor:'red'}}/>
);
};
используйте flex 1, чтобы заполнить "фиктивный"пробел или изгиб 1/2, чтобы заполнить половину экрана и т. д.