Интервал до и после горизонтального FlatList (React Native) - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь создать горизонтальный FlatList, который имеет некоторый интервал вокруг него. Мне удалось получить правильный начальный интервал с paddingLeft в списке, но paddingRight в списке, кажется, не ставит пробел после него (если я прокручиваю весь путь до конца, последний элемент нажимается прямо на границе).

Вот закуска, чтобы вы могли запустить и попробовать это вживую: https://snack.expo.io/@saadq/aW50cm

А вот и мой код:

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

const data = [{ key: 1 }, { key: 2 }, { key: 3 }, { key: 4 }];

class App extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <FlatList
          style={styles.flatList}
          horizontal
          data={data}
          renderItem={() => (
            <View style={styles.box}>
              <Text>Box</Text>
            </View>
          )}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
  },
  flatList: {
    marginTop: 100,
    paddingLeft: 15,
    paddingRight: 15, // THIS DOESN'T SEEM TO BE WORKING
    // marginRight: 15   I can't use marginRight because it cuts off the box with whitespace
  },
  box: {
    display: 'flex',
    justifyContent: 'center',
    alignItems: 'center',
    height: 50,
    width: 100,
    borderWidth: 1,
    borderColor: 'black',
    paddingHorizontal: 15,
    marginRight: 15,
  },
});

export default App;

Использование marginRight вместо paddingRight, по-видимому, дает ожидаемый результат пробела, однако вызывает другую проблему, когда этот пробел ВСЕГДА присутствует, и обрезает элементы при прокрутке. Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Похоже, я смог исправить это, используя contentContainerStyle реквизит FlatList вместо того, чтобы передать style реквизит напрямую.

0 голосов
/ 09 ноября 2018

Вы можете использовать «ListFooterComponent». Это опора Flatlist и действует как последний компонент как Flatlist. Таким образом, вы можете передать пустое представление шириной, например, 15, чтобы получить правильное поле для работы. Попробуйте это:

<FlatList
      style={styles.flatList}
      horizontal
      data={data}
      renderItem={() => (
        <View style={styles.box}>
          <Text>Box</Text>
        </View>
      )}
      ListFooterComponent={<View style={{width:15}}></View>}

Важная строка кода такова:

ListFooterComponent={<View style={{width:15}}></View>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...