React Native: RN-Material-Dropdown не отображается (iOS) - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь использовать lib response-native-material-dropdown в iOS, работающем на iPad Air, но раскрывающийся список не отображается на экране.Я пытался ввести marginTop с отрицательным значением и значением ширины, но ничего не работает.Следуйте коду моего класса и версиям, которые я использую:

Версия RN: 0,55 RN Материал Раскрывающаяся версия: 0.11.1 Код моего класса:

DetailProduct.js

{/* imports */}

export default class DetailProduct extends React.Component {
  constructor(props){
    super(props);

   this.state = {
      sizes: [{value: 'Eleonora'}, {value: 'Barbosa'}, {value: 'Rafaela'}], 
    };
  }

  {/* ... */}

  render() {

    return (
      <View style={styles.container}>

        <View style={styles.baseContent}>
          <View style={styles.contentLeft}>
            <View style={styles.baseProductDetails}>
              <View style={styles.baseCodeSizeColor}>  

                <TouchableOpacity style={styles.baseSize} onPress={() => {
                  <View style={{width: 200, backgroundColor: '#BDBDBD', marginTop: -15, justifyContent: 'flex-start'}}>
                    <Dropdown
                        rippleCentered={true}
                        label='Favorite Fruit'
                        itemCount={4}
                        containerStyle={{borderWidth: 1, borderColor: 'lightgrey',}}
                        dropdownPosition={50}
                        data={[{value: 'Eleonora'}, {value: 'Barbosa'}, {value: 'Rafaela'}]} />    
                  </View>      
                  }} activeOpacity={0.9}>
                  <Image source={require('../imgs/assets/icon_size_product.png')} style={styles.icSize} />
                  <Text style={styles.txtSizeProduct}>Tamanho: Masculino Unico</Text>
                  <Image source={require('../imgs/assets/icon_dropdown_app.png')} style={styles.icDropdownSize} />
                </TouchableOpacity>
                {/* ... */}
              </View>
            </View>
          </View>
      </View>
    );
  }
}

const styles = StyleSheet.create({      
  container: {
    flex: 1,
    padding: 30,
    backgroundColor: '#F5F5F5',
    flexDirection: 'column',
  },
  baseContent: {
    flexWrap: 'wrap',
    height: '90%',
    marginTop: 90,
    flexDirection: 'row',
  },
  contentLeft: {
    flexDirection: 'column',
    width: '50%',
    height: '100%',
    flexWrap: 'wrap',
    marginRight: '2%',
    shadowColor: '#212121',
    shadowOffset: {width: 0,height: 3},
    shadowOpacity: 0.16,
  },
  contentRight: {
    width: '46%',
    flexWrap: 'wrap',
    marginLeft: '2%',
  },
  baseSize: {
    width: '48%',
    alignItems: 'center',
    marginRight: 8,
    alignSelf: 'stretch',
    flexDirection: 'row',
  },
  txtSizeProduct:{
    color: '#FFFFFF',
    fontSize: 12,
  },
  icDropdownSize: {
    width: 12,
    height: 11,
    position: 'absolute', 
    right: 15,
    top: 3
  },
  icSize: {
    width: 17,
    height: 17,
    marginRight: 6,
    resizeMode: 'contain'
  },
});

1 Ответ

0 голосов
/ 22 июля 2019

Я думаю, вы можете попробовать React Hooks.

function DetailProduct() {
  const sizes = [
    { value: "Eleonora" },
    { value: "Barbosa" },
    { value: "Rafaela" }
  ];
  return (
    /* ...*/
    <TouchableOpacity
      style={styles.baseSize}
      onPress={() => {
        <View
          style={{
            width: 200,
            backgroundColor: "#BDBDBD",
            marginTop: -15,
            justifyContent: "flex-start"
          }}
        >
          <Dropdown
            label="Favorite Fruit"
            itemCount={4}
            containerStyle={{ borderWidth: 1, borderColor: "lightgrey" }}
            dropdownPosition={50}
            data={sizes}
          />
        </View>;
      }}
      activeOpacity={0.9}
    >
      /*...*/
    </TouchableOpacity>
    /* ... */
  );
}

const styles = StyleSheet.create({ 
/*...*/
});
...