android - 如何将我的 UI 置于 Android 状态栏下方?

标签 android

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

否则状态栏会和刚刚下来的UI重叠遮挡。 A screenshot of a UI element coming down from the very top of the app but obscured by the status bar.

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

最佳答案

您必须以编程方式将 padding 添加到您的 Activity 中,以防止出现这种情况。 我想出了一个方法来做到这一点,通过从许多来源收集信息,甚至在 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;
}

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

关于android - 如何将我的 UI 置于 Android 状态栏下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32260938/

相关文章:

android - 我是否需要担心 API 16+ 上的非二次幂纹理?

android - 无法发送到 Cloud Firestore

android - 如何减少 RecyclerView 中 CardView 中卡片之间的空间?

android - 如何使线性布局背景透明?

java - 导入 Apache HTTP 组件 Android Studio 1.3.2

Android ListView 滚动到底部

android - 如何通过 ACTION_SEND Intent 将文件上传到 webview

android - 为什么我不能通过点击按钮来启动新 Activity ?

Android 运行时 : FATAL EXCEPTION: androidmapsapi-ZoomTableManager

android - 在Android studio中为另一个项目添加项目依赖