Как отображать кнопки под прокруткой в ​​React Native

Всем добрый день, я работаю над этим реактивным проектом, и у меня возникла проблема с компонентом scrollView и позициями кнопок. поэтому в основном я хочу иметь 2 кнопки, чтобы либо подтвердить, либо отменить мой выбор из scrollView, под прокруткой, и каждая из них заполняет половину ширины. и кнопки, и прокрутка находятся внутри модального окна.

Я пробовал все комбинации flexbox и высоты, которые мне удалось придумать, но ничего не сработало, и высота раздела, включая кнопки, по-прежнему намного больше, чем я хочу, и кнопки не расположены рядом.

это компонент с проблемой:

import React, { Component } from 'react';
import { View, Text, StyleSheet, TouchableOpacity, Modal, TouchableHighlight, ScrollView, FlatList } from 'react-native';
import { NavigationActions } from "react-navigation";
import genericStyle from '../../styles/generic-style';
import { colors, fontSizes } from '../../styles/base';
import values from '../../styles/responsive';
import NAVLogo from '../generic/NAVLogo';

export default class Welcome extends Component {
  state = {
    modalVisible: false,
    values: [
      {
        id: 1,
        text: "one"
      },
      {
        id: 2,
        text: "two"
      },
      {
        id: 3,
        text: "three"
      },
      {
        id: 4,
        text: "four"
      },
      {
        id: 5,
        text: "five"
      },
      {
        id: 6,
        text: "six"
      },
      {
        id: 7,
        text: "seven"
      },
    ]
  };

  setModalVisible(visible) {
    this.setState({ modalVisible: visible });
  }

  render() {
    return (
      <View style = {[styles.welcome, genericStyle.centerContainer]}>
        <Modal
          animationType = "slide"
          transparent = {true}
          visible = {this.state.modalVisible}
          onRequestClose = {() => {
            Alert.alert("Modal has been closed.");
          }}
        >
          <View style = {styles.modal}>
            <View style = {styles.modalContent}>
              <View style = {styles.scrollViewStyle}>
                <ScrollView style = {styles.scrollViewStyle}>
                  {this.state.values.map((value, index) => (
                    <TouchableHighlight
                      onPress = {() => console.info("TH1...")}
                      style = {styles.company}
                      key = {value.id}
                    >
                      <Text>{value.text}</Text>
                    </TouchableHighlight>
                  ))}
                </ScrollView>
              </View>
              <View
                style = {{
                  flex: 1,
                  flexDirection: "column",
                  height: "15%"
                }}
              >
                <TouchableOpacity
                  onPress = {() => {
                    this.setModalVisible(!this.state.modalVisible);
                  }}
                >
                  <Text>confirm</Text>
                </TouchableOpacity>
                <TouchableOpacity
                  onPress = {() => {
                    this.setModalVisible(!this.state.modalVisible);
                  }}
                >
                  <Text>cancel</Text>
                </TouchableOpacity>
              </View>
            </View>
          </View>
        </Modal>

        <NAVLogo />
        <Text style = {styles.text}>
          Welcome
          <Text style = {styles.uname}>
            {" " + this.props.navigation.getParam("uname", "Unknown")}
          </Text>
        </Text>
        <TouchableOpacity
          onPress = {() => {
            console.info("company");
            this.setModalVisible(true);
          }}
          style = {styles.btnContainer}
        >
          <View style = {styles.btn}>
            <Text style = {styles.btnText}>Select Company</Text>
          </View>
        </TouchableOpacity>
        <TouchableOpacity
          onPress = {() => {
            console.info("log out");
            this.props.navigation.dispatch(
              NavigationActions.navigate({
                routeName: "Home"
              })
            );
          }}
          style = {styles.btnContainer}
        >
          <View style = {styles.btn}>
            <Text style = {styles.btnText}> Log out </Text>
          </View>
        </TouchableOpacity>
      </View>
    );
  }
}


const styles = StyleSheet.create({
  welcome: {
    backgroundColor: colors.sky
  },
  btn: {
    width: "75%",
    paddingVertical: 15,
    backgroundColor: colors.darksky,
    marginTop: values.mtb + 3,
    alignItems: "center"
  },
  btnText: {
    fontSize: values.fontSize + 2,
    color: colors.light
  },
  btnContainer: {
    width: "100%",
    alignItems: "center"
  },
  text: {
    fontSize: values.fontSize,
    color: colors.dark,
    fontWeight: "400",
    marginVertical: 20
  },
  uname: {
    fontWeight: "900",
    fontSize: values.fontSize + 2
  },
  modalContent: {
    width: "80%",
    backgroundColor: colors.light,
    flex: 0
  },
  modal: {
    flex: 1,
    alignItems: "center",
    justifyContent: "center",
    backgroundColor: "rgba(00,00,00,0.3)"
  },
  company: {
    width: "100%",
    borderBottomColor: colors.dark,
    borderBottomWidth: 1,
    paddingLeft: 35,
    paddingVertical: 30
  },
  scrollViewStyle: {
    flexGrow: 0,
    flex: 0,
    height: "85%"
  }
});

вот как отображается модальное окно (я не так много работал над стилем, так как застрял с позиционированием кнопок в течение последних 2 часов):

Как отображать кнопки под прокруткой в ​​React Native

я надеюсь, что кто-то может помочь мне с этим. я новичок в том, чтобы реагировать на нативные, поэтому я почти уверен, что это тривиальная проблема, которую я где-то пропустил.

спасибо всем заранее за их время и помощь.

использовать абсолютный вид

Ashok R 09.04.2019 18:35
stackoverflow.com/questions/29541971/…
Ashok R 09.04.2019 18:39

я посмотрю пробный вариант и скажу вам, если он работает

chawki challadia 09.04.2019 18:49

есть и другие блоги medium.com/react-native-training/…

Ashok R 09.04.2019 19:01

еще немного stackoverflow.com/questions/36412395/…

Ashok R 09.04.2019 19:01
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
5
932
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

используйте flexDirection:'row', чтобы расположить его рядом, и position:'absolute', чтобы он остался внизу

<View
   style = {{
   position:'absolute', 
   bottom:10,
   flexDirection: "row",
   justifyContent:'space-between',
   width:'100%'
 }}>

  <TouchableOpacity>
    <Text> CONFIRM </Text>
  </TouchableOpacity>
  <TouchableOpacity>
    <Text> CANCEL </Text>
  </TouchableOpacity>

</View>

Другие вопросы по теме