上一节React Native带你实现scrollable-tab-view(三)中我们最后实现了我们scrollable-tab-view的效果为:
比如有很多页面,我们的tabview需要跟随scrollview的滑动而滑动:
我们现在用的还是默认的tabview,比如我们多加一些页面,
这样肯定不行,我们需要的是上面的那种效果,所以每个view的flex=1这种模式肯定不适合了,我们需要用一个scrollview去包涵tab,使它也能滑动,所以也算是scrollable-tab-view的一个难点了,好啦~ 我们来一步一步实现一下scrollable-tab-view中的ScrollableTabBar.js。
我们先创建一个view叫ScrollableTabBar.js:
/**
* @author YASIN
* @version [React-Native Pactera V01, 2017/9/7]
* @date 17/2/23
* @description ScrollableTabBar
*/
import React, {
Component
} from 'react';
import {
View,
Text,
StyleSheet,
} from 'react-native';
export default class ScrollableTabBar extends Component {
// 构造
constructor(props) {
super(props);
// 初始状态
this.state = {};
}
render() {
return (
<View>
<Text>ScrollableTabBar</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {}
});
然后替换掉index文件中的DefaultTabBar组件:
/**
* 渲染tabview
* @private
*/
_renderTabView() {
let tabParams = {
tabs: this._children().map((child)=>child.props.tabLabel),
activeTab: this.state.currentPage,
scrollValue: this.state.scrollValue,
containerWidth: this.state.containerWidth,
};
return (
<ScrollableTabBar
{...tabParams}
style={[{width: this.state.containerWidth}]}
onTabClick={(page)=>this.goToPage(page)}
/>
);
}
然后我们开始实现ScrollableTabBar组件:
我们用一个scrollview去包裹tab,然后其它的东西直接copy一份DefaultTabBar的内容:
/**
* @author YASIN
* @version [React-Native Pactera V01, 2017/9/7]
* @date 17/2/23
* @description ScrollableTabBar
*/
import React, {
Component
} from 'react';
im