TouchableHighlight и TouchableOpacity влияют на макет на Android



Я заметил, что замена TouchableWithoutFeedback на TouchableHighlight или TouchableOpacity может вызвать различия в компоновке. Это ожидаемо?



Пример:



<TouchableWithoutFeedback onPress={this.onClick}>
<View style={styles.row_container}>
<Text style={styles.row_text}>
{'I count the number of taps: ' + this.state.clicks}
</Text>
</View>
</TouchableWithoutFeedback>


С TouchableWithoutFeedback:



TouchableWithoutFeedback



Заменив его на TouchableOpacity:



TouchableHighlight



Стили:



row_container: {
backgroundColor: 'rgba(0, 0, 0, 0.1)',
flex: 1,
height: 100,
borderColor: '#333333',
borderWidth: 1,
borderRadius: 5,
padding: 5,
},
row_text: {
flex: 1,
fontSize: 18,
alignSelf: 'center',
},
705   4  

4 ответов:

Решение состоит не в том, чтобы ввести представление оболочки. Просто установите стиль непосредственно на TouchableHighlight или TouchableOpacity:

<TouchableOpacity onPress={this.onClick} style={styles.row_container}>
  <Text style={styles.row_text}>
    {'I count the number of taps: ' + this.state.clicks}
  </Text>
</TouchableOpacity>

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

Https://facebook.github.io/react-native/docs/touchableopacity

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

Стиль на TouchableOpacsity вместо View

<TouchableOpacity style={{flex:1,justifyContent:'center',alignItems:'center',backgroundColor:'black',margin:2}}> <Image style={{width:30,height:30,marginBottom:3}} source={require('../images/movies_white.png')} /> <Text style={{color:'#fff'}}>Lịch Sử</Text> </TouchableOpacity>

Вместо

<View style={{flex:1,justifyContent:'center',alignItems:'center',backgroundColor:'black',margin:2}}> <Image style={{width:30,height:30,marginBottom:3}} source={require('../images/movies_white.png')} /> <Text style={{color:'#fff'}}>Lịch Sử</Text> </View>

Comments

    Ничего не найдено.