前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Rn使用FlatList导航栏自动回到中间

Rn使用FlatList导航栏自动回到中间

作者头像
明知山
发布于 2023-10-17 10:36:06
发布于 2023-10-17 10:36:06
16800
代码可运行
举报
文章被收录于专栏:前端开发随笔前端开发随笔
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { useState, useRef } from 'react'
import { FlatList, View, Text, StyleSheet, TouchableOpacity } from 'react-native'

const Center = () => {
    const tabs = ["语文", "数学", "英语", "政治", "历史", "地理"]
    const [active, setActive] = useState(0)
    const flatRef = useRef()

    const activeTab = (index) => {
        setActive(index)
        flatRef.current.scrollToIndex({ viewPosition: 0.5, index: index, animated: true })
    }

    return (
        <>
            <View style={styles.nav}>
                <FlatList data={tabs} ref={flatRef} horizontal showsHorizontalScrollIndicator={false}
                    renderItem={({ item, index }) => (
                        <TouchableOpacity key={index} onPress={() => activeTab(index)}
                            style={[
                                styles.nav_item,
                                active == index && styles.nav_item_active,
                                tabs.length - 1 == index && styles.nav_item_last
                            ]}>
                            <Text style={active == index && styles.nav_item_active_text}>
                                {item}
                            </Text>
                        </TouchableOpacity>
                    )}
                />
            </View>
        </>
    )
}

const styles = StyleSheet.create({
    nav: {
        height: 45,
        flexDirection: "row",
        alignItems: "center",
        borderBottomColor: "#eee",
        borderBottomWidth: 1,
        paddingHorizontal: 10
    },
    nav_item: {
        paddingHorizontal: 20,
        paddingVertical: 4,
        borderColor: "#DADCE2",
        borderWidth: 1,
        borderRadius: 20,
        alignItems: "center",
        justifyContent: "center",
        marginRight: 10
    },
    nav_item_last: {
        marginRight: 0
    },
    nav_item_active: {
        backgroundColor: "#2C72FF",
        borderColor: "transparent",
    },
    nav_item_active_text: {
        color: "#ffffff"
    }
})

export default Center
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Rn实现省市区三级联动
省市区三级联动选择是个很频繁的需求,但是查看了市面上很多插件不是太老不维护就是不满足需求,就试着实现一个 这个功能无任何依赖插件 功能略简单,但能实现需求 核心代码也尽力控制在了60行左右 pca-code.json树型数据来源 Administrative-divisions-of-China 下面只贴了省市区选择的功能,全部代码可参考github area分支
明知山
2023/09/01
4070
Rn实现省市区三级联动
如何优雅的在react-hook中进行网络请求
Hook是在React 16.8.0版本中新加入的特性,同时在React-Native的0.59.0版本及以上进行了支持,使用hook可以不用class的方式的方式使用state,及类似的生命周期特性。
君伟说
2020/10/12
9.5K0
如何优雅的在react-hook中进行网络请求
RN项目第二节 -- 首页实现
一、微组件的封装 每个页面的导航都会有不同的样式或者图片,为了实现代码的复用性,可以将导航统一封装成一个微小组件。 封装的Item需要有可点击事件,需要显示文字和图片。 import React,
谦谦君子修罗刀
2018/06/19
6.7K0
React native城市列表组件
城市列表选择是很多app共有的功能,比如典型的美图app。那么对于React Native怎么实现呢? 要实现上面的效果,首先需要对界面的组成简单分析,界面的数据主要由当前城市,历史访问城市和热门城
xiangzhihong
2018/01/26
2.4K0
RN实现ListView
(1)实现单个item import React, {Component, PropTypes} from 'react'; import { AppRegistry, StyleSheet, Text, View, Dimensions, Platform, Image } from 'react-native'; const {width, height} = Dimensions.get('window'); export default c
提莫队长
2018/05/18
1.2K0
React Native仿美团下拉菜单
在很多产品中都会涉及到下拉菜单选择功能,用的最好的当属美团了,其效果如下: 要实现上面的效果,在原生中比较好做,直接使用PopWindow组件即可。如果使用React Native开发上面的效果,需
xiangzhihong
2018/01/26
5.3K0
【React Native 安卓开发】----第三方框架的引用之React-native-Swiper框架实现欢迎页【第五篇】
今天要介绍的是React-native-Swiper这个RN开源框架,如果你不想用第三方的你也可以自己用viewPagerAndroid去实现,这里先不做介绍了,很简单。 想要了解React-native-Swiper源码的童鞋可以在github直接搜索React-native-Swiper。
先知先觉
2019/01/21
1.5K0
从零开始构建React Native数字键盘功能
现代移动应用程序在入门过程中经常涉及一个步骤,你需要输入发送到你的电子邮件或手机号码的验证码 PIN。有时,你需要使用类似于分割 OTP 输入字段的东西来输入 PIN。另一种输入验证码 PIN 的方式是使用拨号盘。
前端小智@大迁世界
2024/03/01
5610
从零开始构建React Native数字键盘功能
React Native列表之FlatList开发实用教程
在APP开发过程中,列表可谓是页面最重要的一种展现形式了,几乎每一个APP都离不了列表,那么在这篇文章中将向大家分享在React Native中该如何实现列表,以及FlatList的原理和实用指南。
CrazyCodeBoy
2019/12/10
6.7K0
React Native列表之FlatList开发实用教程
React Native学习笔记(三)—— 样式、布局与核心组件
React Native 有一个内置的命令行界面,你可以用它来生成一个新项目。您可以使用 Node.js 附带的 访问它,而无需全局安装任何内容。让我们创建一个名为“AwesomeProject”的新 React Native 项目:npx
张果
2023/04/12
14.5K0
React Native学习笔记(三)—— 样式、布局与核心组件
RN实现头部NavBar
(1)实现NavBar import React, {Component, PropTypes} from 'react'; import { AppRegistry, StyleSheet, Text, View, Dimensions, Platform } from 'react-native'; const {width, height} = Dimensions.get('window'); export default class GDNavB
提莫队长
2018/05/18
1.9K0
React-native-scrollable-tab-view详解
前言:他方山上有佳石,可以用来琢玉器。只有解决了一个红屏,才有机会遇见另一个红屏。只有解决了一个困难,才有机会遇到其他的困难。O(∩_∩)O~生命不息,奋斗不止。 React Native中有许多第三方用于封装tabBar的库,当然也有官方提供的。React-native-scrollable-tab-view是一款非常实用的第三方库。放于界面之上可以实现一个界面中子界面的切换效果,置于界面之下可实现功能模块间的切换,通常用于封装自定义的tabBar。 安装 在终端输入命令 npm i react-na
谦谦君子修罗刀
2018/05/02
4.4K0
React-native-scrollable-tab-view详解
React Native 系列(四) -- 布局
前言 本系列是基于React Native版本号0.44.3写的。RN支持CSS中的布局属性,因此可以使用CSS布局属性,这里就不详细地讲解了,这篇文章的重点主要是讲述一下RN中的Flex布局。 CSS属性布局 视图边框 何时使用? 想要设置自己周边有边框的时候 注意点:一定要设置边框宽度 borderBottomWidth number 底部边框宽度 borderLeftWidth number 左边框宽度 borderRightWidth number 右边框宽度 borderTopWidth num
Scott_Mr
2018/05/16
1.8K0
React Native 列表组件:FlashList、FlatList 及更多
在移动开发中,高效展示数据列表至关重要。作为 React Native 开发者,我们可以使用多种强大的工具来完成这一任务。无论是 ScrollView、SectionList 还是 FlatList,React Native 都提供了一系列用于数据展示的组件。
前端小智@大迁世界
2025/02/06
2640
React Native 列表组件:FlashList、FlatList 及更多
React Native UI界面还原,组件布局与动画效果
写React Native UI和写 Android XML layout 布局 ,个人感觉是大同小异
周陆军博客
2023/04/09
4.9K0
react native仿微信PopupWindow效果
在原生APP开发中,相信很多开发者都会见到这种场景:点击右上角更多的选项,弹出一个更多界面供用户选择。这种控件在原生开发中Android可以用PopupWindow实现,在ios中可以用CMPopTi
xiangzhihong
2018/02/06
2.6K0
react native仿微信PopupWindow效果
React Native项目实战之搭建美团个人中心界面
在很多app应用型APP中,个人中心往往会单独出一个模块,而对于刚入门React Native的朋友来说,怎么去实现一些静态的页面,并且怎么着手实现,怎么分层,怎么去实现这个架构,我想是很基础的(ps
xiangzhihong
2018/02/06
2.5K0
React Native项目实战之搭建美团个人中心界面
React Native之react-native-scrollable-tab-view详解
在React Native开发中,官方为我们提供的Tab控制器有两种:TabBarIOS和ViewPagerAndroid。TabBarIOS,仅适用于IOS平台 ViewPagerAndroid,仅适用于Android平台(严格来讲并不算,因为我们还需要自己实现Tab)。在项目开发中,我们优先选择一些开源兼容性比较好的第三方库,例如,react-navigation,以及本文即将说到的react-native-scrollable-tab-view(官方地址)。react-native-scrolla
xiangzhihong
2018/02/06
6.6K0
React Native之react-native-scrollable-tab-view详解
手把手教你如何自定义 React Native 底部导航栏
如果你觉得 React Navigation 默认 Tab 组件看起来太平淡,或者想创造一些更现代的东西,那么你想法就和我一样。 在本指南中,我将向你演示如何创建自定义标签栏以并与 React Navigation 一起使用。
前端小智@大迁世界
2019/04/25
7.9K0
手把手教你如何自定义 React Native  底部导航栏
React Native实现自定义顶部导航栏
效果 import React, {Component} from 'react'; import { Platform, StatusBar, StyleSheet, Text, View, ViewPropTypes, } from 'react-native'; import PropTypes from 'prop-types'; import DeviceInfo from 'react-native-device-info'; const NAV_BAR_HEIGH
henu_Newxc03
2022/05/05
1.5K0
React Native实现自定义顶部导航栏
相关推荐
Rn实现省市区三级联动
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档