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