React-native android 工具栏位于状态栏下方

Posted

技术标签:

【中文标题】React-native android 工具栏位于状态栏下方【英文标题】:React-native android toolbar going below status bar 【发布时间】:2017-10-21 16:47:46 【问题描述】:

我正在尝试在本机反应中设置状态栏颜色。我使用react-native-material-ui 作为工具栏组件。我的问题是,每当我设置状态栏颜色时,工具栏都会在状态栏上下移动。 请看下面的截图:

我正在使用以下内容:

const uiTheme = 
    palette: 
        primaryColor: COLOR.green500
    ,
    toolbar: 
        container: 
            height: 56
        
    
;

export default class RecentChatListScreen extends Component

    render() 
        return (
            <ThemeProvider uiTheme=uiTheme>
                <View>
                    <StatusBar backgroundColor="rgba(0, 0, 0, 0.2)" translucent />
                    <Toolbar
                        leftElement="menu"
                        centerElement="Hola"
                        searchable=
                            autoFocus: true,
                            placeholder: 'Search your chats',
                        
                        onLeftElementPress=() => this.props.navigation.navigate('DrawerOpen')
                    />
                    <Text>List of recent chats.</Text>
                    <Button onPress=() => this.props.navigation.navigate('Chat') title="Go to Chat"/>
                </View>
            </ThemeProvider>
        );
    

【问题讨论】:

您是否尝试将工具栏、文本和按钮包装在另一个视图中? @Srijith 是的,我做到了,但不幸的是什么也没发生。 有人能告诉我为什么它被否决了吗?如果问题无法理解,我很乐意改进。 你的 uiTheme 是什么? @Srijith 更新问题 【参考方案1】:

如果有人遇到 expo 问题,只需在 App 组件的根视图中添加“paddingTop: Expo.Constants.statusBarHeight”

render() 
    return (
      <View style=styles.container>
      //other components 
      </View>)


const styles = StyleSheet.create(
  container: 
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
    paddingTop: Expo.Constants.statusBarHeight
  
);

【讨论】:

【参考方案2】:

不要使用特定于 Expo 的代码,而是在 StatusBar 中使用 react-native 提供的常量。 According to the documentation、StatusBar.currentHeight 仅提供给 android 实现。我还没有验证 ios 版本返回 0 还是 undefined。

const uiTheme = 
    palette: 
        primaryColor: COLOR.green500
    ,
    toolbar: 
        container: 
            height: 56,
            paddingTop: StatusBar.currentHeight || 0
        
    
;

【讨论】:

【参考方案3】:

根据演示应用程序here,您应该使用状态栏高度的视图来避免覆盖。就像下面StatusBar之后的代码:

<View style= backgroundColor: COLOR.green500, height: 24  />

【讨论】:

好的,我会试试这个并通知。顺便说一句,在 IOS 上呢? 它工作正常,但我如何针对 IOS 和 iPhone X 进行调整?

以上是关于React-native android 工具栏位于状态栏下方的主要内容,如果未能解决你的问题,请参考以下文章

React-native安装发布流程Android篇

如何使用 Expo CLI 为 android 构建 64 位本机代码

react-native run-android 失败:无法在设备上安装应用程序,请阅读上面的错误

2020-06-19 react-native下开发运行Android跟iOS详细步骤

react-native input显示千分位

react-native input显示千分位