React本机视频在Android中禁用TouchableOpacity

React本机视频在Android中禁用TouchableOpacity,android,react-native,touchableopacity,react-native-video,Android,React Native,Touchableopacity,React Native Video,我正在开发一个react native应用程序,其中包括一个视频播放器(react native video)和一些我自己设置的简单控件。在iOS上这很好,但在Android上,我用于控制和导航的touchablepacity元素似乎检测不到触摸。(导航由我的应用程序中的react native fluid transitions控制)。当我打开inspector时,屏幕覆盖视图似乎位于我的控件顶部。然而,在iOS上并非如此,我也没有配置这样的视图 我安装Atom是为了使用它的inspector

我正在开发一个react native应用程序,其中包括一个视频播放器(react native video)和一些我自己设置的简单控件。在iOS上这很好,但在Android上,我用于控制和导航的
touchablepacity
元素似乎检测不到触摸。(导航由我的应用程序中的react native fluid transitions控制)。当我打开inspector时,屏幕覆盖视图似乎位于我的控件顶部。然而,在iOS上并非如此,我也没有配置这样的视图

我安装Atom是为了使用它的inspector功能来查看视图的实际顺序。情况如下:

return (
      <View style={internalStyles.container}>
        <Video style={internalStyles.videoContainer}
            ref={(ref) => {
             this.props.player = ref
            }}
            source={{uri: url}}
            controls={false}
            onEnd={() => this.videoEnded()}
            paused={this.state.paused}
            muted={false}
            repeat={false}
            resizeMode={"contain"}
            volume={1.0}
            rate={1.0}
            ignoreSilentSwitch={"obey"}
          />              
        {this.renderControls()}
        {Renderer.getInstance().renderNavigationButton()}
      </View>
  );

VideoView
是我的组件名称,
Video
是实际的视频播放器,我突出显示的TouchableOpacity是我试图开始工作的按钮。在这个视图层次结构中,似乎没有视图位于任何之上。我还将这个细分与我的按钮实际工作的其他组件进行了比较,它们看起来是一样的

我的代码如下所示:

return (
      <View style={internalStyles.container}>
        <Video style={internalStyles.videoContainer}
            ref={(ref) => {
             this.props.player = ref
            }}
            source={{uri: url}}
            controls={false}
            onEnd={() => this.videoEnded()}
            paused={this.state.paused}
            muted={false}
            repeat={false}
            resizeMode={"contain"}
            volume={1.0}
            rate={1.0}
            ignoreSilentSwitch={"obey"}
          />              
        {this.renderControls()}
        {Renderer.getInstance().renderNavigationButton()}
      </View>
  );
返回(
{
this.props.player=ref
}}
source={{uri:url}
控件={false}
onEnd={()=>this.videoEnded()}
暂停={this.state.paused}
静音={false}
重复={false}
resizeMode={“包含”}
卷={1.0}
速率={1.0}
ignoreSilentSwitch={“服从”}
/>              
{this.renderControls()}
{Renderer.getInstance().renderNavigationButton()}
);
其中RenderControl是一个渲染暂停按钮的函数,Renderer是一个单例组件,包含我在我的应用程序的更多组件中使用的项目的渲染函数。这些都可以在iOS上正常工作,但在Android上不行。react-native视频似乎与react-native流体转换不兼容,因为当我删除其中一个时,一切都正常

有人知道是什么导致了这种行为吗?非常感谢您的帮助。

从“react native”导入{TouchableOpacity};
import {TouchableOpacity} from 'react-native';

<TouchableOpacity>some text</TouchableOpacity>
一些文本
从“react native”导入{TouchableOpacity};
一些文本

尝试从TouchableOpacity组件中删除activeOpacity道具。 或者,您可以使用特定于平台的代码来设置activeOpacity属性的值

import { Platform, TouchableOpacity } from 'react-native'

    <TouchableOpacity 
      activeOpacity={Platform.OS==='android' ? 0 : 0.2}
      >
      <Text>submit</Text>
    </TouchableOpacity> 
从'react native'导入{Platform,TouchableOpacity}
提交

尝试从TouchableOpacity组件中删除activeOpacity道具。 或者,您可以使用特定于平台的代码来设置activeOpacity属性的值

import { Platform, TouchableOpacity } from 'react-native'

    <TouchableOpacity 
      activeOpacity={Platform.OS==='android' ? 0 : 0.2}
      >
      <Text>submit</Text>
    </TouchableOpacity> 
从'react native'导入{Platform,TouchableOpacity}
提交

将组件包装在视图中并禁用指针事件

<View pointerEvents="none">
  <Video source={{ uri: source }} />
</View>

将组件包装在视图中并禁用指针事件

<View pointerEvents="none">
  <Video source={{ uri: source }} />
</View>


如果绝对定位,则会产生类似的问题。尝试为它设置更高的z索引。我有,高达6000的zIndex,这比我的任何其他视图都要高。你还有其他想法吗?这个视图是由react native根据我所知自动创建的,所以你不需要关注它。尝试将TouchableOpacity替换为另一个TouchableOpacity,看看它是否有效。如果没有,那么试着把它移到其他地方——如果它能工作,那么在它之前就有一些捕捉触摸事件的问题。如果它的位置绝对正确,那么它可能会产生类似的问题。尝试为它设置更高的z索引。我有,高达6000的zIndex,这比我的任何其他视图都要高。你还有其他想法吗?这个视图是由react native根据我所知自动创建的,所以你不需要关注它。尝试将TouchableOpacity替换为另一个TouchableOpacity,看看它是否有效。如果没有,则尝试将其移动到其他位置-如果它可以工作,则在它之前捕获触摸事件会出现问题。感谢您的回答,但在实现TouchableOpacity时不会遇到问题,因为它在其他组件中工作。它只是当前的“上下文”,在其中它似乎是禁用的。单击时它会褪色吗?不,它实际上没有检测到触摸HI!我实际上有一个更新(见我的问题)。我使用react-native-fluid转换进行共享元素转换,当我运行应用程序的上一个版本时,一切都正常。这个框架似乎在我的视频视图中插入了一些覆盖,这会阻止用户交互。您熟悉这一点吗?谢谢您的回答,但在实现TouchableOpacity时不会遇到问题,因为它可以在其他组件中工作。它只是当前的“上下文”,在其中它似乎是禁用的。单击时它会褪色吗?不,它实际上没有检测到触摸HI!我实际上有一个更新(见我的问题)。我使用react-native-fluid转换进行共享元素转换,当我运行应用程序的上一个版本时,一切都正常。这个框架似乎在我的视频视图中插入了一些覆盖,这会阻止用户交互。你熟悉吗?这对我很有用!我无法用常规的react本地视频和可触摸视频重现问题。但不知何故,在我目前的环境中,它只是第二次检测到触摸。真奇怪。你知道为什么会这样吗?不知道为什么我的视频会检测触摸…这对我来说很有效!我无法用常规的react本地视频和可触摸视频重现问题。但不知何故,在我目前的环境中,它只是第二次检测到触摸。真奇怪。你知道为什么会这样吗?不知道为什么我的视频会检测到触摸。。。