Как выровнять вид по центру, не меняя положение детей? - PullRequest
0 голосов
/ 06 октября 2018
<View style={{height: '100%', width: '100%'}}>
   {OtherContent}
   <ScrollView>
      <View style={{flexDirection: 'row', flexWrap: 'wrap', padding: 20}}>
           {children}
      </View>
   <ScrollView> 
</View>

Я хочу, чтобы View внутри ScrollView находился в центре экрана, не меняя положение детей

Дети:

<View style={Styles.docsContainer}>
            {arr.map((document, index) => {
                return (
                    <TouchableOpacity key={index} style={[Style.docStyle} onPress={null}>
                        <Icon name='file-text-o'/>
                        <Text>{document.name}</Text>
                    </TouchableOpacity>
                );
            })}
</View>
const Styles: {
    docsContainer: {
       flexDirection: 'row',
       flexWrap: 'wrap',
       padding: 20,
    },
    docStyle: {
      alignItems: 'center', 
      padding: 20,
      margin: 5,
      marginBottom: 10,
      borderRadius: 8,
      width: 170
    }

}

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Действительно, нам не нужен родительский View, нам просто нужен scrollView как flewGrow 1, который делает scrollView полной шириной и высотой для каждого устройства.

Мой подход:

   <ScrollView contentContainerStyle={{ flexGrow: 1, justifyContent: 'center', alignItems: 'center' }}>
    <View style={{
      alignItems: 'center',
      justifyContent: 'center',
      flex: 1,
    }}>
      <Text>mahesh nandam</Text>
    </View>
  </ScrollView>

Попробуйте это.

0 голосов
/ 13 октября 2018

Центр по горизонтали

Если вы хотите центрировать View только по горизонтали, вы можете установить alignItems: 'center' на ScrollView 's contentContainerStyle.

<View style={{ height: '100%', width: '100%' }}>
  <Text>Other content</Text>
  <ScrollView contentContainerStyle={{ alignItems: 'center' }}>
    <View style={{ flexDirection: 'row', flexWrap: 'wrap', padding: 20, backgroundColor: 'red' }}>
      <Text>children</Text>
    </View>
  </ScrollView> 
</View>

Внутренний View выделен красным.

center horizontally

Центр по горизонтали и вертикали

В этом случае вы можете установить { flex: 1, justifyContent: 'center', alignItems: 'center' } для того же contentContainerStyle.

<View style={{ height: '100%', width: '100%' }}>
  <Text>Other content</Text>
  <ScrollView contentContainerStyle={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
    <View style={{ flexDirection: 'row', flexWrap: 'wrap', padding: 20, backgroundColor: 'red' }}>
      <Text>children</Text>
    </View>
  </ScrollView> 
</View>

center horizontally and vertically

Если что выОжидайте, что макет отличается от любого из скриншотов. Пожалуйста, поделитесь простым эскизом макета.

0 голосов
/ 06 октября 2018

View - ваши ближайшие дети ScrollView.Таким образом, вы можете использовать ScrollView с помощью contentContainerStyle и выровнять его по центру следующим образом.

<View style={{height: '100%', width: '100%'}}>
    <ScrollView
         contentContainerStyle={{
             flexGrow: 1,
             justifyContent: 'center',
             alignItems: 'center',
         }}
    >
     <View style={{flexDirection: 'row', flexWrap: 'wrap', padding: 20}}>
         {children}
     </View>
    <ScrollView> 
</View>

Я думаю, это то, что вы ищите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...