【发布时间】:2018-09-19 19:58:35
【问题描述】:
我必须进行布局,布局的顶部应该在SystemBars 下绘制。 (此应用的最低 API 级别为 22)
我设置了这些标志来实现这一点。在其他活动中,我可以使用SystemBars 下的视图绘制整个片段,但这里我不能这样做。
我使用此代码允许在SystemBars 下绘制布局
window.apply {
addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
statusBarColor = resources.getColor(android.R.color.transparent)
navigationBarColor = resources.getColor(android.R.color.transparent)
setBackgroundDrawable(background)
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
这是应用中的结果:
我需要在系统栏下画出那个灰色区域。
更新:
@Redman 解决方案仅部分起作用。
现在我可以在StatusBar 下绘图,也可以在软件按钮 (navigationButtons) 下绘图,如下面的屏幕所示。有什么方法可以让布局在SystemBars 下绘制,但不允许在navigationButtons 下绘制?因为我发布的代码适用于应用程序中的不同片段。但在其他片段中,我没有ImageView 作为ToolBar 的一部分。如果你只有ToolBar,例如2色渐变背景和一些backButton + SearchView,它工作正常。但是当我添加ImageView 时,ImageView 不会在顶部SystemBar(aka StatusBar) 下“滑动”。即使在上图中,您也可以清楚地看到绿色(它是在StatusBar 下绘制的工具栏背景)。但是ImageView是不允许画在那个栏下面的。
实现这一目标的唯一方法是使用那行特殊的代码
window.apply {
setFlags( WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
}
但这一行也允许在NavigationButtons 下绘制布局内容(这是一个问题)。
【问题讨论】:
-
你的意思是在通知栏后面吗?
-
是的,在后面。会解决这个问题
标签: android android-layout kotlin