使用react-navigation的StackNavigator时,怎么配合使用StatusBar?
来源:1-9 自定义组件NavigationBar-3
LetsShare
2018-02-04
请教一下,为了达到沉浸式的效果,我需要把StatusBar的颜色和导航颜色设置成一样,如下代码
static navigationOptions = {
headerStyle:{
backgroundColor:'#458B74',
},
headerTitle:(
<View style={{alignSelf:'center'}}>
<View>
<StatusBar
backgroundColor={'#458B74'}
barStyle='light-content'/>
</View>
<Text style={{
fontSize:20,
color:'white',
}}>
{'Title'}
</Text>
</View>
)
}
但是在Android环境中,其它没有设置StatusBar的页面的状态栏也被染色了。
这个问题还有没有其他比较好解决方式?
写回答
2回答
-
CrazyCodeBoy
2018-02-13
也可以在_renderTab方法中来监听当前选中是哪个tab,然后修改这个tab的statusbar:
_renderTab(Component, selectedTab, title, renderIcon) { return ( <TabNavigator.Item selected={this.state.selectedTab === selectedTab} selectedTitleStyle={this.state.theme.styles.selectedTitleStyle} title={title} renderIcon={() => <Image style={styles.image} source={renderIcon}/>} renderSelectedIcon={() =><Image style={[styles.image,this.state.theme.styles.tabBarSelectedIcon]} source={renderIcon}/>} onPress={() => this.setState({selectedTab: selectedTab})}> <Component {...this.props} theme={this.state.theme}/> </TabNavigator.Item> ) }
00 -
CrazyCodeBoy
2018-02-05
问题分析:在RN中StatusBar会传递的,也就是说:
A页面设置了StatusBar;
页面没有设置StatusBar;
A跳转到B,B会复用A的StatusBar;
解决办法:
设置B页面的StatusBar,将其设置为默认样式即可;
return <View style={{flex: 1, backgroundColor: "gray",}}> <StatusBar barStyle='dark-content'/> ...
012018-02-05
相似问题