前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【React Native】react-native-scrollable-tab-view

【React Native】react-native-scrollable-tab-view

作者头像
Gavin-ZYX
发布于 2018-05-18 07:31:29
发布于 2018-05-18 07:31:29
2.8K00
代码可运行
举报
运行总次数:0
代码可运行

一张跟内容完全关系的图

介绍

一个带有TabBar和可切换页面的控件。 在Android中可以看成是ViewPagerTabLayout的结合。 实际效果的话,就下面这样了。

官方的动图

你可以选择直接上官方Github了解怎么使用,或者继续往下看我装逼。

添加到项目中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install react-native-scrollable-tab-view --save

使用

基本用法

tabLabel指定Tab名称

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}

效果:

(怎么感觉比Android里面简单多了~~)

使用goToPage切换页面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            ref={(tabView) => {
                this.tabView = tabView;
            }}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Button tabLabel='Tab 3' onPress={() => this.tabView.goToPage(0)}
                    title='GO to Tab 1'/>
        </ScrollableTabView>
    );
}

this.tabView.goToPage(0):跳转到第0页 (页面:0、1、2...)

Props
  • renderTabBar (Function:ReactComponent) TabBar的样式,可以使用官方提供的DefaultTabBar(默认)、ScrollableTabBar,也可以自定义。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            renderTabBar={() => <DefaultTabBar/>}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}

DefaultTabBar:自动分配水平方向的空间,空间不够时每个Tab会自动换行。 ScrollableTabBar:可以超过屏幕范围,滚动可以显示。

当然,我们还可以对他的样式进行调整。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    render() {
        return (
            <ScrollableTabView
                renderTabBar={() =>
                    <ScrollableTabBar style={{height: 40, borderWidth: 0, elevation: 2}}
                                      tabStyle={{height: 40}}/>}>
                ...
            </ScrollableTabView>
        );
    }

borderWidth:设置边框(感觉没什么用) elevation:层级效果(阴影) tabStyle:每个小TabStyle (修改style-height后,不改变tabStyle-height会导致TabBar内容不居中)

  • tabBarPosition (String) TabBar的位置。top(default)、bottomoverlayTop(顶部、悬浮在内容视图之上)、overlayBottom(底部、悬浮在内容视图之上)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            tabBarPosition='top'>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}

效果的话你一个个去试吧~~

  • onChangeTab (Function) 页面改变监听。回调函数中有一个Object类型的参数,包含两个keyi(当前选中页面的下标)、ref(被选中的Tab对象)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            onChangeTab={(obj) => {
                console.log('current index : ' + obj.i)
            }}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}
  • onScroll (Function) 滑动监听。回调函数中有一个float类型的参数,表示滑动的偏移。 如:当前页面和下个页面的中间值 例: page0->page1 :0 -> 0.2 -> 0.3 ... 1 ; page2->page3: 2->2.1->2.2->2.3 ... 3
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            onScroll={(position) => {
                console.log('position : ' + position)
            }}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}

从page0滑动到page1时打印的结果:

page0->page1

  • locked (Bool) 阻止滑动,默认为false。设置成true后,只能通过点击Tab来切换页面。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            locked={false}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}
  • initialPage (Integer) 默认选择的页面,默认为0。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            initialPage={1}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}
  • page (Integer) 我也不知道干嘛用的,官方给了这样的介绍 set selected tab(can be buggy see #126
  • tabBarUnderlineStyle (View.propTypes.style) TabBar指示器的样式
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    render() {
        return (
            <ScrollableTabView
                tabBarUnderlineStyle={{backgroundColor:'#000000', height:1}}>
                <Text tabLabel='Tab 1'>Tab 1</Text>
                <Text tabLabel='Tab 2'>Tab 2</Text>
                <Text tabLabel='Tab 3'>Tab 3</Text>
            </ScrollableTabView>
        );
    }
  • tabBarBackgroundColor (String) TabBar背景色
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            tabBarBackgroundColor='#FFFFFF'>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}
  • tabBarActiveTextColor (String) Tab选中时的文字颜色
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            tabBarActiveTextColor='#000000'>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}
  • tabBarInactiveTextColor (String) Tab未选中时的文字颜色
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            tabBarInactiveTextColor='#666666'>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}
  • tabBarTextStyle (Object) TabBar文字样式
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tabBarTextStyle={fontFamily: 'Roboto', fontSize: 15} 

怎么用????

  • scrollWithoutAnimation (Bool) 是否不显示指示条的左右移动的动画,默认`false
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            scrollWithoutAnimation={true}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}
  • prerenderingSiblingsNumber (Integer) 预渲染当前页面相邻页面数量,默认为0。若设置为1,预渲染当前页左右共两个页面。 (类似android中ViewPager 的setOffscreenPageLimit(int arg0);)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return (
        <ScrollableTabView
            prerenderingSiblingsNumber={3}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}

在完全显示页面前(滑动的过程中),默认是不渲染View的。只有完全切换到当前页面时,才开始渲染选中的View。 例:第一次page0->page1,当page1未完全显示时。page1还未开始渲染,是个空页面。

参考

react-native-scrollable-tab-view [React Native]react-native-scrollable-tab-view(入门篇)

以上有错误之处,感谢指出

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
python基础之多态
  Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的多态相关知识。
jiankang666
2022/12/05
3500
python基础之多态
python基础之集合的基本操作
  在实际开发过程中,我们会遇到需要将相关数据关联起来的情况,例如,处理学生的学号、姓名、年龄、成绩等信息。另外,还会遇到需要将一些能够确定的不同对象看成一个整体的情况。Python提供了字典和集合这两种数据结构来解决上述问题。这里介绍一下python集合的基本操作相关知识。
jiankang666
2022/06/22
2590
python基础之集合的基本操作
python基础之集合的添加与删除
  在实际开发过程中,我们会遇到需要将相关数据关联起来的情况,例如,处理学生的学号、姓名、年龄、成绩等信息。另外,还会遇到需要将一些能够确定的不同对象看成一个整体的情况。Python提供了字典和集合这两种数据结构来解决上述问题。这里介绍一下python集合的添加与删除相关知识。
jiankang666
2022/06/22
4990
python基础之集合的添加与删除
python基础之函数嵌套定义
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数嵌套定义相关内容。
jiankang666
2022/12/05
5000
python基础之函数嵌套定义
python基础之函数global和nonlocal关键字
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数global和nonlocal关键字相关内容。
jiankang666
2022/12/05
2560
python基础之函数global和nonlocal关键字
python基础之函数模块包
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数包相关内容。
jiankang666
2022/12/05
2290
python基础之函数模块包
python基础之函数模块的创建
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数模块的创建相关内容。
jiankang666
2022/12/05
3620
python基础之函数模块的创建
python基础之函数典型案例-学生管理系统
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数典型案例学生管理系统相关内容。
jiankang666
2022/12/05
3890
python基础之函数典型案例-学生管理系统
python基础之函数模块的导入
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数模块的导入相关内容。
jiankang666
2022/12/05
8050
python基础之函数模块的导入
python基础之函数典型案例-哥德巴赫猜想
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数典型案例哥德巴赫猜想相关内容。
jiankang666
2022/12/05
4260
python基础之函数典型案例-哥德巴赫猜想
python之函数的定义
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的定义相关内容。
jiankang666
2022/06/22
5580
python基础之函数lambda表达式
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数lambda表达式相关内容。
jiankang666
2022/12/05
3120
python基础之函数lambda表达式
python之self参数用法
  Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的self参数用法。
jiankang666
2022/12/05
3230
python之self参数用法
python基础之函数局部变量和全局变量
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数局部变量和全局变量相关内容。
jiankang666
2022/12/05
5880
python基础之函数局部变量和全局变量
python之函数的返回值
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数返回值相关内容。
jiankang666
2022/12/05
2.2K0
python之函数的返回值
python基础之函数嵌套调用
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数嵌套调用相关内容。
jiankang666
2022/12/05
5730
python基础之函数嵌套调用
python基础之函数__name__属性
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数name属性相关内容。
jiankang666
2022/12/05
4150
python基础之函数__name__属性
python之类的构造方法
  Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的类的构造方法。
jiankang666
2022/12/05
3270
python之类的构造方法
python之函数的实参和形参
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数实参和形参相关内容。
jiankang666
2022/12/05
9900
python之函数的实参和形参
python之类的静态方法
  Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的类的静态方法。
jiankang666
2022/12/05
3620
python之类的静态方法
相关推荐
python基础之多态
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档