我一直在寻找解决方案很长一段时间,但令人惊讶的是,我认为还没有人面对它。所以我把它贴出来了。
我用React Navigation V3创建了一个简单的抽屉导航器。我添加了一个菜单图标,当我单击它时,抽屉就会按原样显示。但是,任何手势都不起作用。从左向右滑动不做任何事情。即使抽屉是打开的,点击空白空间也不会关闭抽屉。
这是我的代码:
import {
createStackNavigator,
createSwitchNavigator,
createAppContainer,
createDrawerNavigator
} from 'react-navigation';
import Home from './screens/Home';
import LoginForm from './screens/LoginForm';
import Articles from './screens/Articles';
const AuthStack = createStackNavigator({
LoginScreen: LoginForm
});
const AppStack = createDrawerNavigator({
HomeScreen: Home,
ArticlesScreen: Articles
});
const RootNavigator = createSwitchNavigator(
{
Auth: AuthStack,
App: AppStack
},
{
initialRouteName: 'Auth'
}
);
export default createAppContainer(RootNavigator);
在0.61.0以上的版本中似乎是固定的,但对于较旧的版本,这对我来说很有效。
在index.js
中:
. . .
import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
AppRegistry.registerComponent(appName, () => gestureHandlerRootHOC(App));
. . .
在项目的index.js
中,只需使用手势HandlerRootHOC
:
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
import { gestureHandlerRootHOC } from 'react-native-gesture-handler'
AppRegistry.registerComponent(appName, () => gestureHandlerRootHOC(App));
资源:https://github.com/react-navigation/drawer/issues/105#issuecomment-540667009
只需将反应本机手势处理程序放在根索引的开头。js
import 'react-native-gesture-handler';
我已经找到解决办法了。React Naviation依赖于react-nate-ption-handler
库。在React Naviation文档的安装部分,它只说使用命令react-natelink
创建链接。这对于iOS来说已经足够了。但是对于Android来说,你必须编辑MainActivity.java
文件,这样手势处理程序库才能按预期工作:
import com.facebook.react.ReactActivity;
+ import com.facebook.react.ReactActivityDelegate;
+ import com.facebook.react.ReactRootView;
+ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
public class MainActivity extends ReactActivity {
@Override
protected String getMainComponentName() {
return "Example";
}
+ @Override
+ protected ReactActivityDelegate createReactActivityDelegate() {
+ return new ReactActivityDelegate(this, getMainComponentName()) {
+ @Override
+ protected ReactRootView createRootView() {
+ return new RNGestureHandlerEnabledRootView(MainActivity.this);
+ }
+ };
+ }
}
请参阅文档:https://kmagiera.github.io/react-native-gesture-handler/docs/getting-started.html
实际上,React导航文档中没有规定修改任何文件,因为它特定于React原生手势处理程序,而不是React导航。我把答案保存在这里,这样可以帮助别人。
更新:React导航的最新文档解决了这个问题
二等 三等
有没有办法禁用滑动手势来打开导航抽屉?在标签之间滑动时出现菜单真的很烦人。
我是android新手。我有一个关于Android导航抽屉的问题。我在我的应用程序中加入了导航抽屉,一切都很顺利,但我想知道是否有人能帮我在导航抽屉列表中获得惰性动画。 图像的来源。 非常感谢。
有人能告诉我如何创建活动到这个主要活动,导航抽屉将看到在所有他们?我需要使用这个特定的MainActivity代码。我不需要使用碎片,只要3个简单的活动将添加到这个抽屉。 NavDrawer布局:
我一直在遵循谷歌的导航抽屉指南,我想把它添加到一个带有标签和手势的活动中。 我想禁用打开导航抽屉的手势,有人知道怎么做吗?
我正在试用本教程中给出的导航抽屉(幻灯片菜单)。 上面的链接和我的不同之处在于,我试图调用活动而不是调用片段。当应用程序打开时,我无法看到导航抽屉菜单,我只能看到打开HOME活动的操作栏。 以下是我更改的代码:(是否需要一个片段,或者我可以在导航抽屉的第一个屏幕上使用活动?) 我如何解决这个问题,以便在我的家庭活动中显示导航抽屉? 更新: 我甚至尝试了以下链接中给出的选项: 如何使用导航抽屉调用我