在反应原生中控制可触摸区域

mll*_*llm 26 reactjs react-native

我有一个方形TouchableOpacity按钮,其中间的图形只是一个小点图标,其余的是透明背景.我发现在许多Android设备中按下它很困难,因为显然只有不透明的区域是可触摸的,其余的则不是.

有没有办法控制一个TouchableOpacity或其他类似按钮的兄弟姐妹的可触摸区域?

jev*_*lio 35

您可以使用该View#hitSlop属性来增加可触摸区域.这在您知道增加的触摸区域不会与其他触摸屏重叠的情况下非常有用.

更强大的解决方案是使用paddingstyle属性.Touchable*组件的可触摸区域包括元素的填充.

  • 是的,TouchableOpacity也是一个View,所以它继承了它的属性. (3认同)
  • 很好的回答,谢谢.不像你期望的那样容易找到,但我猜大多数人都不知道要搜索"命中率". (3认同)
  • @DrorBar我不相信您可以:“ **注意**触摸区域永远不会超出父视图边界,并且如果触摸碰到两个重叠的视图,则兄弟视图的Z索引始终优先。” https://facebook.github.io/react-native/docs/touchablewithoutfeedback#hitslop (2认同)

Nic*_*cks 22

我只是添加一些代码以便于引用:

<View style={Styles.buttonStyle}>
    <TouchableOpacity onPress={onBtn1Pressed} hitSlop={{top: 20, bottom: 20, left: 50, right: 50}}>
        <Text style={Styles.textStyle}>
           Button text
         </Text>
    </TouchableOpacity>
</View>
Run Code Online (Sandbox Code Playgroud)

父按钮容器具有以下样式.由于宽度为150,因此左右为50以增加可点击区域.

 buttonStyle:{
    alignItems:'center',
    backgroundColor: '#F92660',
    width:150,
    height:50,
    marginTop:20,
    marginBottom:10,
    marginRight:15,
    padding:5,
  },
Run Code Online (Sandbox Code Playgroud)