Реагировать с навигацией: не работает пролистывание ящика в Android - PullRequest
0 голосов
/ 20 ноября 2018

Я долго искал решение, но, как ни странно, я думаю, что никто еще не сталкивался с ним.Итак, я публикую его.

Я создал простой Навигатор ящиков с 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);

1 Ответ

0 голосов
/ 20 ноября 2018

Я нашел решение.Реактивная навигация зависит от библиотеки react-native-gesture-handler.В разделе «Установка» документации React Navigation говорится только о создании ссылки с помощью команды react-native link.Этого достаточно для 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 Navigation нигде не указано, чтобы изменять какие-либо файлы, поскольку это относится только к react-native-gesture-handler, а не к React Navigation.Я держу ответ здесь, чтобы он мог помочь другим.

ОБНОВЛЕНИЕ: Последние документы React Navigation решают эту проблему

...