android - React Native Android Slider 无法在设备上垂直滑动

标签 android react-native slider

我使用以下代码在 React Native 0.43 上使用了 Slider 组件。它适用于 iOS,因为它有一个很好的大“按钮”供用户按住和拖动。但在 android 上它只是一个小点,我发现我无法垂直拖动它(1/10 尝试成功)。我发现“拖动”被后台的 ScrollView 捕获了。帮忙?

      <Slider
        minimumValue={minValue}
        maximumValue={maxValue}
        step={step}
        style={styles.slider}
        value={parseInt(input.value)}
        onSlidingComplete={onSlidingComplete}
        onValueChange={onValueChange}
      />

  slider: {
    marginRight:-100,
    marginLeft:-100,
    width:250,
    transform: [
      { rotateZ : '-90deg' },
    ],
  },

vertical slider

最佳答案

为此,您需要覆盖 SliderPanResponder。出于某种原因,Android 在垂直旋转时不能很好地应对。

componentWillMount () {
    this._panResponder = PanResponder.create({
      // Ask to be the responder:
      onStartShouldSetPanResponder: (evt, gestureState) => true,
      onStartShouldSetPanResponderCapture: (evt, gestureState) => true,
      onMoveShouldSetPanResponder: (evt, gestureState) => true,
      onMoveShouldSetPanResponderCapture: (evt, gestureState) => true
    })
}

然后简单地将 PanHandler 应用于 Slider:

<Slider
    {...this._panResponder.panHandlers}
    ... />

这使它绝对优先于讨厌的 ScrollView

此外,最好的做法是在使用 Slider 时完全停止 ScrollView 的垂直平移,这有时会在您快速连续拖动两个组件时发生.

<ScrollView scrollEnabled={!this.state.sliding}>

    <Slider
        onValueChange={() => {
          this.setState({
            sliding: true
          })
        }}
        onSlidingComplete={() => {
          this.setState({
            sliding: false
          })
        }}
      ... />

</ScrollView>

关于android - React Native Android Slider 无法在设备上垂直滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44321053/

相关文章:

android - 多次出现退出 App 确认对话框

jQuery 将列表中的图像源替换为下一个图像源,并从最后开始

Python Matplotlib slider 小部件未更新

javascript - react native |在 React-Native 中生成一个不重复的(名称)生成器

android - 无效的资源目录名称,drawable-anydpi-v21

reactjs - react-native 使状态栏 'barStyle' 可动画化

javascript - 将时间 slider 与传单合并

android - SDK 中未安装构建工具(已安装 sdk 工具)

java - 将图像预加载到变量中

java - 安卓 : Searching youtube video from my app