首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >棒棒糖:在statusBar后面绘制,颜色设置为透明

棒棒糖:在statusBar后面绘制,颜色设置为透明
EN

Stack Overflow用户
提问于 2015-01-09 16:39:15
回答 11查看 168.8K关注 0票数 153

我已经将我的statusBar颜色设置为只为棒棒糖透明,在我的主题中有以下一行:

代码语言:javascript
复制
<item name="android:statusBarColor">@android:color/transparent</item>

现在我需要在它后面画,但我不能在它后面画任何视图。我知道如何使用windowTranslucentStatus属性执行此操作,但不想使用此属性,因为它会忽略设置为透明的statusBar的颜色。

EN

回答 11

Stack Overflow用户

发布于 2015-10-13 13:07:34

尝试此主题

代码语言:javascript
复制
<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>

请确保,您的布局集

代码语言:javascript
复制
android:fitsSystemWindows="false"
票数 22
EN

Stack Overflow用户

发布于 2015-01-13 22:01:10

而不是

代码语言:javascript
复制
<item name="android:statusBarColor">@android:color/transparent</item>

使用以下内容:

代码语言:javascript
复制
<item name="android:windowTranslucentStatus">true</item>

并确保删除'MainActivity‘布局中的顶部填充(默认情况下添加)。

请注意,这并不会使状态栏完全透明,状态栏上仍然会有一个“褪色的黑色”覆盖。

票数 17
EN

Stack Overflow用户

发布于 2018-04-23 11:43:15

@Cody Toombs的回答导致了导航栏后面的布局问题。我找到的是使用@Kriti提供的this解决方案

下面是同样的Kotlin代码片段:

代码语言:javascript
复制
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)
}

您还需要添加

代码语言:javascript
复制
android:fitsSystemWindows="false"

布局的根视图。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27856603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档