如何将我的 UI 定位在 Android 状态栏下方?

Posted

技术标签:

【中文标题】如何将我的 UI 定位在 Android 状态栏下方?【英文标题】:How do I position my UI below the Android status bar? 【发布时间】:2015-11-22 12:26:32 【问题描述】:

我发现many questions 在(覆盖)“顶部”和状态栏(被遮蔽)下方显示 UI,深度方向。但是,如果您有一个从顶部下降的类似通知的 Activity,您如何定位它以使其自动下降超过状态栏?

否则,状态栏会与刚刚出现的 UI 重叠并遮住。

我是否只需将 UI 提高 \status-bar 高度\ 来处理这种重叠?

【问题讨论】:

你可以在你的根视图上放置一个margin-top,或者如果你想完全隐藏状态栏,那么使用沉浸模式。 【参考方案1】:

您必须以编程方式将padding 添加到您的活动中以防止这种情况发生。 我想出了一个方法来做到这一点,通过从许多来源收集信息,甚至在 Stack Overflow 中也是如此。

尝试根据您的需要进行调整:

private void fixActivityPadding() 
    // gets additional padding (final padding: status bar height + custom padding)
    int padX = getResources().getDimensionPixelSize(R.dimen.welcome_padding_x);
    int padY = getResources().getDimensionPixelSize(R.dimen.welcome_padding_y);
    // gets navigation and status bar heights
    int navBarHeight = getResourceHeight("navigation_bar_height");
    int statusBarHeight = getResourceHeight("status_bar_height");

    // gets the layout in the Activity
    View layout = findViewById(R.id.activity_layout);
    // sets padding accordingly, considering orientation (nav bar position)
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
        layout.setPadding(padX, statusBarHeight + padY, padX, navBarHeight + padY);
     else 
        layout.setPadding(padX, statusBarHeight + padY, navBarHeight + padX, padY);
    


// helper method
private int getResourceHeight(String identifier) 
    int result = 0;
    int resourceId = getResources().getIdentifier(identifier, "dimen", "android");
    if (resourceId > 0) 
        result = getResources().getDimensionPixelSize(resourceId);
    
    return result;

我只是不确定您所说的通知活动是什么意思,但我相信这应该对您有所帮助。

【讨论】:

【参考方案2】:

我认为这只是WindowManager.LayoutParams.FLAG_FULLSCREEN。 将他添加到您的活动中:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

当用户从顶部滑动时,状态栏再次可见。

【讨论】:

以上是关于如何将我的 UI 定位在 Android 状态栏下方?的主要内容,如果未能解决你的问题,请参考以下文章

Android Kitkat 4.4版本状态栏下使用导航抽屉时状态栏颜色显示为白色不透明

如何让我的 iOS7 UITableViewController 不出现在顶部状态栏下?

android中状态栏下的nativescript操作栏

UITableView 部分索引在 iOS 7 中定位错误的单元格,顶行隐藏在导航栏下

一段时间后,ios7 UINavigationBar 在状态栏下停止扩展

Material-UI TextField 组件错误和 helperText 道具将我的状态视为未定义