install yarn add react-native-scrollview-maintain
call enableMaintain before use scroll component
//index.js
import { AppRegistry } from 'react-native';
import { App } from './src/App';
import { name as appName } from './app.json';
import {enableMaintain} from 'react-native-scrollview-maintain';
enableMaintain();
AppRegistry.registerComponent(appName, () => App);
or
import {enableMaintainVisibleContentPosition, disableMaintainVisibleContentPosition} from 'react-native-scrollview-maintain';
...
// `ref` is the ref to your ScrollView / FlatList
useEffect(() => {
let cleanupPromise: Promise<number> | undefined;
if (Constants.isAndroid) {
const viewTag = findNodeHandle(ref.current);
cleanupPromise = enableMaintainVisibleContentPosition(viewTag, 0);
}
return () => {
void cleanupPromise?.then((handle) => {
void disableMaintainVisibleContentPosition(handle);
};
}, [ref]);
React native screens library is licensed under The MIT License.
Module for those who need maintainVisibleContentPosition on Android now but don't want to maintain your own RN fork RNPullRequest
Thans for workaround Stackie Jia and Maxime Bertheau