如何将我的 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 不出现在顶部状态栏下?
UITableView 部分索引在 iOS 7 中定位错误的单元格,顶行隐藏在导航栏下