React Native 使用 React-native-scrollable-tab-view 實現 類頭條 新聞頁效果
效果如下:

一、安裝依賴
npm install react-native-scrollable-tab-view --save
安裝后對應版本依賴如下:
"dependencies": {
"react": "16.8.3",
"react-native": "0.59.5",
"react-native-scrollable-tab-view": "^0.10.0",
},
二、實現代碼
1)顯示View代碼
import React, {Component} from 'react';
import {Text, View} from 'react-native';
import styles from '../../style/NewsStyle';
import ScrollableTabView, {DefaultTabBar, ScrollableTabBar} from 'react-native-scrollable-tab-view';
/**
* 新聞主頁
*/
class News extends Component {
render() {
return (
<ScrollableTabView
tabBarPosition='top' //位於屏幕的位置,top頂部 bottom底部 overlayTop頂部,懸浮在內容視圖之上 overlayBottom底部,懸浮在內容視圖之上
locked={false} //表示手指是否能拖動視圖,默認為false(表示可以拖動)
scrollWithoutAnimation={true} //視圖切換是否有動畫
style={styles.container}
renderTabBar={() => <ScrollableTabBar />} //ScrollableTabBar支持超過屏幕寬度,Tab左右滾動,而DefaultTabBar不支持
onChangeTab={(obj) => {
console.log('index:' + obj.i);
}}
tabBarUnderlineStyle={styles.lineStyle}
tabBarActiveTextColor='#FF0000'
>
<Text style={styles.textStyle} tabLabel='娛樂'>娛樂1</Text>
<Text style={styles.textStyle} tabLabel='科技'>科技1</Text>
<Text style={styles.textStyle} tabLabel='軍事'>軍事1</Text>
<Text style={styles.textStyle} tabLabel='體育'>體育1</Text>
<Text style={styles.textStyle} tabLabel='娛樂'>娛樂1</Text>
<Text style={styles.textStyle} tabLabel='科技'>科技1</Text>
<Text style={styles.textStyle} tabLabel='軍事'>軍事1</Text>
<Text style={styles.textStyle} tabLabel='體育'>體育1</Text>
<Text style={styles.textStyle} tabLabel='娛樂'>娛樂1</Text>
<Text style={styles.textStyle} tabLabel='科技'>科技1</Text>
<Text style={styles.textStyle} tabLabel='軍事'>軍事1</Text>
<Text style={styles.textStyle} tabLabel='體育'>體育1</Text>
</ScrollableTabView>
);
}
}
module.exports = News;
2)樣式Style文件
NewsStyle.js
/** * 新聞主頁樣式 */ import {StyleSheet} from 'react-native'; export const styles = StyleSheet.create({ container: { flex: 1, marginTop: -4, }, lineStyle: { height: 1, backgroundColor: '#FF0000', }, textStyle: { flex: 1, fontSize: 16, marginTop: 20, textAlign: 'center', }, }); module.exports = styles;
