从透明状态栏更改为彩色状态栏android

问题描述 投票:0回答:3

我正在研究棒棒糖,我知道如何通过设置此标志FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS并通过以下方式设置颜色来为状态栏着色getWindow().setStatusBarColor(color);

但是我有一个图像和一个透明的ActionBar,我想将图像显示在操作栏的后面,并且当用户滚动图像下方的ListView时,状态栏应填充为ActionBar的颜色

问题是在状态栏后面显示图像,并在以后用颜色滚动填充状态栏后显示图像。我不知道如何达到这种效果。

任何帮助将不胜感激

android android-listview android-actionbar android-5.0-lollipop
3个回答
0
投票

首先,您必须在style.xml上添加TranslucentActionBar样式

    <style name="AppTheme.TranslucentActionBar">
    <item name="android:actionBarStyle">@style/Widget.ActionBar.Transparent</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="actionBarStyle">@style/Widget.ActionBar.Transparent</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="android:windowContentOverlay">@null</item>
   <!--  <item name="windowContentOverlay">@null</item> -->
</style>

在您的班级中添加此方法。

@TargetApi(19) 
private void setTranslucentStatus(boolean on) {
    Window win = getWindow();
    WindowManager.LayoutParams winParams = win.getAttributes();
    final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    if (on) {
        winParams.flags |= bits;
    } else {
        winParams.flags &= ~bits;
    }
    win.setAttributes(winParams);
}

接下来,在setContentView()之前的OnCreate方法中添加此>

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            setTranslucentStatus(true);
        }

然后状态栏将覆盖您的活动。

添加滚动侦听器并添加这样的设置状态栏alpha方法。

getWindow().setStatusBarColor(Color.argb(alpha, 253, 152, 0));

0
投票

您需要使用以下标志来使系统栏透明并覆盖它:


0
投票

只需将此代码复制到您的onCreate

© www.soinside.com 2019 - 2024. All rights reserved.