У вас проблема со стилем, который вы используете. Когда вы устанавливаете размеры (ширина, высота) в процентах, он будет брать процент от компонента, который его оборачивает. Вот почему, когда вы добавили TouchableOpacity
, это испортило все стили. У вас есть 2 варианта, изменить используемый шаблон стиля или внести простое изменение, которое может динамически изменить width
с MenuItem
, например так:
//App.js
<TouchableOpacity style={styles.touchableContainer} onPress={() => navigation.navigate('Details')}>
<MenuItem itemImage={require('./app/img/QR_code_for_mobile_English_Wikipedia.svg.png')} children='Moj QR' isWrapped={true} />
</TouchableOpacity>
...
//And the styling inside your style object
touchableContainer: {
width: '50%'
}
В приведенном выше коде вы добавляете эту опору который будет использоваться для изменения стилей в
//MenuItem.js
//change the wrapper for this one:
<View style={this.props.isWrapped ? {...styles.menuItem, width: '100%'} : styles.menuItem}>
...
//And add the flexGrow property to your styles.menuItem
menuItem: {
width: '50%',
height: '33.3333%',
padding: 10,
flexGrow: 1,
},