Android: жесты смахивания MaterialTopTabs заблокированы вложенным FlatListJavascript

Форум по Javascript
Ответить
Anonymous
 Android: жесты смахивания MaterialTopTabs заблокированы вложенным FlatList

Сообщение Anonymous »

Я работаю над приложением React Native со специальной структурой навигации, включающей экран чата, вложенный в несколько навигаторов. Корнем является MaterialTopTabNavigator, который содержит BottomTabNavigator, а внутри этой нижней вкладки находится фактический экран с FlatList для сообщений. Проблема, с которой я столкнулся, характерна для Android: жесты горизонтального смахивания для переключения между верхними вкладками полностью терпят неудачу, если жест начинается над областью FlatList.
на iOS все работает отлично, но на Android такое ощущение, что FlatList агрессивно поглощает все события касания, даже горизонтальные, и не позволяет им всплывать в родительский PagerView. вертикальная прокрутка работает нормально, и если я проведу пальцем по заголовку или за пределы списка, вкладка переключится правильно.
вот моя текущая настройка (упрощенная):
1. Корневой навигатор (верхние вкладки)

Код: Выделить всё

const TopTab = createMaterialTopTabNavigator();

export const DetailTaskNavigator = () => {
return (
// swipeEnabled is definitely true


{/* the issue is inside this tab which contains the bottom nav */}



);
};
2. Вложенный навигатор (нижние вкладки)
Я подозреваю, что дополнительная вложенность может быть частью проблемы.

Код: Выделить всё

const BottomTab = createBottomTabNavigator();

export const ChatTabNavigator = () => {
return (


{/* other screens... */}

);
};
3. Экран чата

Код: Выделить всё

export const MessageSection = () => {
return (







);
};
Что я пытался до сих пор отладить:
  • переключение между реагирующим FlatList и реагирующим нативным-жестовым обработчиком FlatList. ни один из них не исправил пролистывание.
  • гарантировалось, что flex: 1 присутствует в каждом родительском контейнере, чтобы избежать проблем с нулевой высотой.
  • проверено android:windowSoftInputMode="adjustResize" в манифесте.
  • пробовал использовать SimulficientHandlers, но это сложно, поскольку PagerView скрыт внутри реакции-навигации библиотека.
ENV:
react-native: 0.80.2
react-navigation/material-top-tabs: 7.4.9
pager-view: 6.9.1
Кто-нибудь сталкивался с этим конкретным конфликтом со списками и вложенными навигаторами на Android? Есть ли обходной путь, позволяющий заставить список передавать горизонтальные жесты вверх?

Подробнее здесь: https://stackoverflow.com/questions/798 ... d-flatlist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»