如何更改为 react-native-tab-view 的颜色?
How to change to color of react-native-tab-view?
我是 react-native 的新手,正在学习它。在学习 react-native-tab-view 时,我试图改变它的颜色,但经过几次尝试后我无法做到。如果有人指导我如何更改默认情况下为蓝色的选项卡栏的颜色,我将非常感激。 Here is the link to npm react-native-tab-view 这是一段代码。任何帮助将不胜感激。
import * as React from 'react';
import { View, StyleSheet, Dimensions } from 'react-native';
import { TabView, SceneMap } from 'react-native-tab-view';
const FirstRoute = () => (
<View style={[styles.scene, { backgroundColor: '#ff4081' }]} />
);
const SecondRoute = () => (
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} />
);
const initialLayout = { width: Dimensions.get('window').width };
export default function TabViewExample() {
const [index, setIndex] = React.useState(0);
const [routes] = React.useState([
{ key: 'first', title: 'First' },
{ key: 'second', title: 'Second' },
]);
const renderScene = SceneMap({
first: FirstRoute,
second: SecondRoute,
});
return (
<TabView
navigationState={{ index, routes }}
renderScene={renderScene}
onIndexChange={setIndex}
initialLayout={initialLayout}
/>
);
}
const styles = StyleSheet.create({
scene: {
flex: 1,
},
});
您需要创建自定义 react-native-tab-view-custom-tabbar
此处有更多详细信息react-native-tab-view#readme
更改 tab-bar
的背景颜色
如果您参考此 section,则必须在使用 renderTabBar
属性声明自定义 React 组件后传递 tab-bar 的样式属性。
<TabView
navigationState={{ index, routes }}
renderScene={renderScene}
onIndexChange={setIndex}
initialLayout={initialLayout}
renderTabBar={props => <TabBar {...props} style={{backgroundColor: 'black'}}/>} // <-- add this line
/>
更改 tab-bar
的文本颜色
如果你参考这个,
<TabBar
renderLabel={({route, color}) => (
<Text style={{ color: 'black', margin: 8 }}>
{route.title}
</Text>
)}
style={{backgroundColor: 'white'}}
...
/>
随时使用 example snack 进行进一步试验。 :)
这是我实现它的方法
自定义 TabBar,然后像下面的代码一样在 TabView 中使用它
首先让我们先初始化状态
const [index, setIndex] = useState(0);
const [routes] = useState([
{ key: 'first', title: 'Main Tab' },
{ key: 'second', title: 'Second Tab' }]);
const renderScene = SceneMap({
first: FeaturedStore,
second: AllStore });
更改 labels/titles 的样式这可能对您有所帮助。
这里我使用了我的自定义 TextView 你可以使用你自己的
const renderTabBar = props => {
return (
<TabBar
{...props}
renderLabel={({ focused, route }) => {
return (
<TextView
size={20}
category="Medium"
color={focused ? 'BLACK' : 'GRAY3'}>
{route.title}
</TextView>
);
}}
indicatorStyle={styles.indicatorStyle}
style={styles.tabBar}
/>
);
};
这是 TabView 的示例代码
<View style={styles.container}>
<View style={styles.divider} />
<TabView
renderTabBar={renderTabBar}
navigationState={{ index, routes }}
renderScene={renderScene}
onIndexChange={setIndex}
initialLayout={{ width: SCREEN_WIDTH }}
showPageIndicator={true}
/>
</View>
让我们把樱桃放在蛋糕上,下面是使这个 TabView 看起来像这样的样式
const styles = StyleSheet.create({
container: { width: '100%', height: '100%', backgroundColor: COLORS.WHITE },
tabBar: {
backgroundColor: '#ffffff',
borderBottomWidth: 1,
borderColor: COLORS.BLACK,
},
indicatorStyle: {
backgroundColor: COLORS.PRIMARY,
padding: 1.5,
marginBottom: -2,
},
divider: {
zIndex: 100,
position: 'absolute',
width: 1,
height: 48,
backgroundColor: 'black',
alignSelf: 'center',
},
});
更多信息可以访问官方docs
我是 react-native 的新手,正在学习它。在学习 react-native-tab-view 时,我试图改变它的颜色,但经过几次尝试后我无法做到。如果有人指导我如何更改默认情况下为蓝色的选项卡栏的颜色,我将非常感激。 Here is the link to npm react-native-tab-view 这是一段代码。任何帮助将不胜感激。
import * as React from 'react';
import { View, StyleSheet, Dimensions } from 'react-native';
import { TabView, SceneMap } from 'react-native-tab-view';
const FirstRoute = () => (
<View style={[styles.scene, { backgroundColor: '#ff4081' }]} />
);
const SecondRoute = () => (
<View style={[styles.scene, { backgroundColor: '#673ab7' }]} />
);
const initialLayout = { width: Dimensions.get('window').width };
export default function TabViewExample() {
const [index, setIndex] = React.useState(0);
const [routes] = React.useState([
{ key: 'first', title: 'First' },
{ key: 'second', title: 'Second' },
]);
const renderScene = SceneMap({
first: FirstRoute,
second: SecondRoute,
});
return (
<TabView
navigationState={{ index, routes }}
renderScene={renderScene}
onIndexChange={setIndex}
initialLayout={initialLayout}
/>
);
}
const styles = StyleSheet.create({
scene: {
flex: 1,
},
});
您需要创建自定义 react-native-tab-view-custom-tabbar
此处有更多详细信息react-native-tab-view#readme
更改 tab-bar
的背景颜色如果您参考此 section,则必须在使用 renderTabBar
属性声明自定义 React 组件后传递 tab-bar 的样式属性。
<TabView
navigationState={{ index, routes }}
renderScene={renderScene}
onIndexChange={setIndex}
initialLayout={initialLayout}
renderTabBar={props => <TabBar {...props} style={{backgroundColor: 'black'}}/>} // <-- add this line
/>
更改 tab-bar
的文本颜色如果你参考这个,
<TabBar
renderLabel={({route, color}) => (
<Text style={{ color: 'black', margin: 8 }}>
{route.title}
</Text>
)}
style={{backgroundColor: 'white'}}
...
/>
随时使用 example snack 进行进一步试验。 :)
这是我实现它的方法
自定义 TabBar,然后像下面的代码一样在 TabView 中使用它
首先让我们先初始化状态
const [index, setIndex] = useState(0);
const [routes] = useState([
{ key: 'first', title: 'Main Tab' },
{ key: 'second', title: 'Second Tab' }]);
const renderScene = SceneMap({
first: FeaturedStore,
second: AllStore });
更改 labels/titles 的样式这可能对您有所帮助。 这里我使用了我的自定义 TextView 你可以使用你自己的
const renderTabBar = props => {
return (
<TabBar
{...props}
renderLabel={({ focused, route }) => {
return (
<TextView
size={20}
category="Medium"
color={focused ? 'BLACK' : 'GRAY3'}>
{route.title}
</TextView>
);
}}
indicatorStyle={styles.indicatorStyle}
style={styles.tabBar}
/>
);
};
这是 TabView 的示例代码
<View style={styles.container}>
<View style={styles.divider} />
<TabView
renderTabBar={renderTabBar}
navigationState={{ index, routes }}
renderScene={renderScene}
onIndexChange={setIndex}
initialLayout={{ width: SCREEN_WIDTH }}
showPageIndicator={true}
/>
</View>
让我们把樱桃放在蛋糕上,下面是使这个 TabView 看起来像这样的样式
const styles = StyleSheet.create({
container: { width: '100%', height: '100%', backgroundColor: COLORS.WHITE },
tabBar: {
backgroundColor: '#ffffff',
borderBottomWidth: 1,
borderColor: COLORS.BLACK,
},
indicatorStyle: {
backgroundColor: COLORS.PRIMARY,
padding: 1.5,
marginBottom: -2,
},
divider: {
zIndex: 100,
position: 'absolute',
width: 1,
height: 48,
backgroundColor: 'black',
alignSelf: 'center',
},
});
更多信息可以访问官方docs