Android: реагирование на собственное перекрытие TouchableOpacity и View ведут себя по-разному, когда есть стиль backgroundColor - PullRequest
0 голосов
/ 22 апреля 2020

Я создал 2 вида, которые отображают перекрытия друг с другом. Верх и низ

Overlap with no background

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

Однако, когда я настроил вид снизу backgroundColor. Когда я нажал на зону перекрытия, на Android, он отреагировал, когда я нажал на вид сверху, что я считаю неправильным. (iOS он правильно ответил, что нажата нижняя часть)

Overlap with background

Шаги для воспроизведения

Предоставьте подробный список шагов, которые воспроизводят проблему. Вот пример компонента

const OverlapseTouchExample = ({backgroundColor}) => {
  const [pressedBox, setPressefBox] = React.useState('')
  return (
    <View>
      <Text>{pressedBox} pressed</Text>
      <TouchableOpacity style={[styles.box, {backgroundColor: 'blue'}]} onPress={() => setPressefBox('top')} />
      <View style={backgroundColor ? { backgroundColor: 'orange' } : null}>
        <View style={{marginTop: -75}}>
          <TouchableOpacity style={[styles.boxBottom, backgroundColor ? { backgroundColor: 'green '} : null]} onPress={() => setPressefBox('bottom')} />
        </View>
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  box: {
    width: 150,
    height: 150,
    borderWidth: 1,
  },
  boxBottom: {
    width: 120,
    height: 200,
    borderWidth: 1,
  }
})

Проблема обнаружена, когда для backgroundColor установлено значение true <OverlapseTouchExample backgroundColor={true} />

Вы можете увидеть его в Snack https://snack.expo.io/@gie3d / 9b6c32 ( Android)

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