我已经将我的statusBar颜色设置为只为棒棒糖透明,在我的主题中有以下一行:
<item name="android:statusBarColor">@android:color/transparent</item>
现在我需要在它后面画,但我不能在它后面画任何视图。我知道如何使用windowTranslucentStatus
属性执行此操作,但不想使用此属性,因为它会忽略设置为透明的statusBar的颜色。
发布于 2015-10-13 13:07:34
尝试此主题
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimaryDark">@android:color/transparent</item>
<item name="colorPrimary">@color/md_blue_200</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
请确保,您的布局集
android:fitsSystemWindows="false"
发布于 2015-01-13 22:01:10
而不是
<item name="android:statusBarColor">@android:color/transparent</item>
使用以下内容:
<item name="android:windowTranslucentStatus">true</item>
并确保删除'MainActivity‘布局中的顶部填充(默认情况下添加)。
请注意,这并不会使状态栏完全透明,状态栏上仍然会有一个“褪色的黑色”覆盖。
发布于 2018-04-23 11:43:15
@Cody Toombs的回答导致了导航栏后面的布局问题。我找到的是使用@Kriti提供的this解决方案
下面是同样的Kotlin代码片段:
if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true)
}
if (Build.VERSION.SDK_INT >= 19) {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
if (Build.VERSION.SDK_INT >= 21) {
setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false)
getWindow().setStatusBarColor(Color.TRANSPARENT)
}
private fun setWindowFlag(activity: Activity, bits: Int, on: Boolean) {
val win: Window = activity.getWindow()
val winParams: WindowManager.LayoutParams = win.getAttributes()
if (on) {
winParams.flags = winParams.flags or bits
} else {
winParams.flags = winParams.flags and bits.inv()
}
win.setAttributes(winParams)
}
您还需要添加
android:fitsSystemWindows="false"
布局的根视图。
https://stackoverflow.com/questions/27856603
复制相似问题