我发现many questions围绕" top" (覆盖)和在(被模糊)状态栏中,深度方式。但是,如果您从顶部发出类似通知的活动,那么如何定位它以使其自动落在状态栏之外?
我是否只需要通过\ status-bar height \使UI更高来处理这种重叠?
答案 0 :(得分: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;
}
我不确定Notification Activity的含义,但我相信这对您有所帮助。
答案 1 :(得分:0)
我认为这只是WindowManager.LayoutParams.FLAG_FULLSCREEN
。
将他添加到您的活动中:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
当用户从顶部滑动时,状态栏会再次显示。