您的位置:首页 > 财经 > 金融 > 网站开发者工具url_东莞千寻电子科技有限公司_网站卖链接_图片搜索引擎

网站开发者工具url_东莞千寻电子科技有限公司_网站卖链接_图片搜索引擎

2025/3/19 9:29:49 来源:https://blog.csdn.net/u013704970/article/details/146022794  浏览:    关键词:网站开发者工具url_东莞千寻电子科技有限公司_网站卖链接_图片搜索引擎
网站开发者工具url_东莞千寻电子科技有限公司_网站卖链接_图片搜索引擎

效果图如上,内容滑一点点,指示器也按比例话一点点,列表宽度跟数据有关。

实现思路如下:

1.监听列表滑动事件,获取列表横向滑动距离,假设为A;

2.获取列表的宽度,及列表可滑动的宽度,假设为B;

3.获取指示器宽度,及指示器可滑动的宽度;假设为C;

4.计算指示器滑动距离,假设为X;

5.根据 滑动距离/列表可滑宽度 = 滑动距离/指示器可滑宽度,得出A/B=X/C,

所以X= A/B * C,把ABC数据带进来,即可算出指示器滑动距离,并设置给指示器item的左间距。

代码实现如下:UI样式如下

<View> <FlatListhorizontal={true}showsHorizontalScrollIndicator={false}data={tripData}renderItem={({item, index, separators}) => this.renderItem(item, index, length)}keyExtractor={(item, index) => index.toString()}renderScrollComponent={props => (<ScrollView {...props} />)}getItemLayout={(data, index) => ({length: this.vItemWidth, offset: (this.vItemWidth + 5) * index, index})}onTouchStart={(e) => this.scrollEnable(false)}onTouchCancel={(e) => this.scrollEnable(true)}onScroll={this.onScroll}/>{this.renderIndicator()}</View>renderIndicator() {return(<View style={styles.indicatorContainer}><Viewref={(view) => {this.indicatorView = view;}}style={[styles.indicatorItem]}/></View>);};scrollEnable(enable) {//处理一些滑动冲突事件}renderItem(item, index, length) {
//item的样式
}

滑动算法如下:

onScroll = (event) => { let nativeEvent = {...event.nativeEvent};let offsetX = nativeEvent.contentOffset.x;//用户横向滑动距离let indicatorWidth = styles.indicatorContainer.width;//指示器容器宽度let indicatorItemWidth = styles.indicatorItem.width;  //指示器宽度let indicatorLeft = offsetX / this.slideWidth * (indicatorWidth - indicatorItemWidth); this.indicatorView.setNativeProps({marginLeft: indicatorLeft}); };//列表可滑距离=列表总宽度 - 单屏宽度
列表总宽度= item的宽度 * item的个数 + item间间距 * (item个数 - 1) + 左间距 + 有间距;
列表可滑距离 = 列表总宽度 - 单屏显示的宽度;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com