您可以从ScrollView使用Animated from react-native、onLayout、onContentSizeChange和onScroll以及一些数学函数来完成此操作。 基本上,你可以比较ScrollView的可见高度和内容的实际大小(可见和隐藏),这样你就知道了滚动条的高度,然后你只需要在用户滚动时更新滚动条的位置。 请参见以下带有react钩子的代码示例:
import * as React from 'react';
import {View, Text} from 'react-native';
import {ScrollViewIndicator} from '@fanchenbao/react-native-scroll-indicator';
const App = () => {
return (
<View
style={{
flex: 1,
justifyContent: 'center',
alignItems: 'center',
}}>
<View
style={{
height: '30%',
width: '80%',
borderWidth: 1,
borderColor: 'black',
}}>
<ScrollViewIndicator indStyle={{backgroundColor: 'green'}}>
<View>
<Text>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
rhoncus nisl egestas, auctor mi pulvinar, aliquam metus. Nunc
porttitor quam molestie tempor laoreet. Sed vitae ex vitae turpis
convallis accumsan. Fusce consequat quis nisi sed lacinia. Nullam
quis condimentum tellus. Donec ornare quam sit amet tempor
imperdiet. Proin condimentum leo quis ipsum pretium ornare
facilisis eget nunc. Pellentesque orci purus, pellentesque et nisl
at, varius molestie nisi. Vestibulum ante ipsum primis in faucibus
orci luctus et ultrices posuere cubilia curae; Nam ante nulla,
sagittis vitae ante id, dignissim vestibulum ligula. Mauris
iaculis nisi sed sapien finibus, sed pharetra risus rutrum. Cras
laoreet mattis egestas. Pellentesque feugiat accumsan ultricies.
Nullam viverra sapien nec tellus commodo aliquet. Integer faucibus
quam sed nibh congue, at cursus risus vulputate. Morbi commodo
mollis tempus.
</Text>
</View>
</ScrollViewIndicator>
</View>
</View>
);
};
export default App;
4条答案
按热度按时间laik7k3q1#
你应该在滚动时添加监听器,然后创建一个自定义视图,并转换它,因为scrollListener和不可见的滚动指示器这是你想要的简单实现:
希望这能有所帮助!
yv5phkfx2#
您可以使用ScrollView的
indicatorStyle
prop 来改变颜色,但它只支持白色、黑色或默认三种颜色。您可以使用scrollIndicatorInsets
prop 来设置指示器的插图。更多自定义样式,您可以使用react-native-scroll-indicator。mwecs4sa3#
您可以从ScrollView使用Animated from react-native、onLayout、onContentSizeChange和onScroll以及一些数学函数来完成此操作。
基本上,你可以比较ScrollView的可见高度和内容的实际大小(可见和隐藏),这样你就知道了滚动条的高度,然后你只需要在用户滚动时更新滚动条的位置。
请参见以下带有react钩子的代码示例:
样式:
pgccezyw4#
免责声明:我扩展了Lord Pooria's answer并将其转换为npm package。
Try it on Snack Expo
演示
这是一个从软件包文档复制的简单演示。