Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

347
Views
¿Cómo centra una lista plana con elementos flexibles = 1 y no reduce el contenido mientras mantiene un ancho completo?

Estoy tratando de configurar una lista plana con elementos que tengan las siguientes propiedades.

  • tiene flex: 1
  • no tiene un ancho especificado (la altura se puede establecer en el contenido de las imágenes)
  • es maxWidth establecido
  • el width no se puede forzar al 100% porque la intención es que la lista plana admita varias columnas
  • minWidth no se puede configurar ya que evitará la reducción del contenido si es demasiado grande para caber con el número de columnas.

FlatList es el componente de nivel superior de una pantalla, por lo que hará el encabezado colapsado en iOS. A la que

  • ocupa todo el ancho
  • tiene algo de acolchado
  • la barra de desplazamiento debe estar alineada a la derecha (por lo que no puede hacer padding en FlatList en sí)

Entonces lo que tengo es algo como

 const data = Array.from({length: 5}, (v,k) => ({v,k})); function renderItem({item, index}) { return (<View style={{ flex:1, maxWidth: 100, borderWidth: 1, backgroundColor: 'red', // alignSelf: "center" (also shrinks) }}> <Text>{item.k}</Text> </View>) } return (<FlatList style={StyleSheet.absoluteFill} contentContainerStyle={{ padding: 16, // alignSelf: center (shrinks content) }} renderItem={renderItem} data={data} />)

También me gustaría evitar onLayout para evitar demasiados renderizados.

https://snack.expo.dev/@trajano/flatlistneedscentering

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Hay otro accesorio llamado columnWrapperStyle que hace lo que necesitaba.

 <FlatList columnWrapperStyle={{ justifyContent: 'center', }} contentContainerStyle={{ paddingVertical: 16, }} initialNumToRender={2} renderItem={renderItem} data={data} numColumns={numColumns} //can be set to 3 to force shrinking ItemSeparatorComponent={() => <View style={{ height: 16 }} />} keyExtractor={(item) => item.k.toString()} /> );

Tenga en cuenta que NativeBase no expone esto como un accesorio de utilidad.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!