首页 > 解决方案 > android - 如何在不影响导航栏的情况下为 statsbar 设置渐变?

问题描述

我正在尝试向状态栏添加渐变,这是我的代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

它在状态栏上向上移动工具栏,并用活动的内容覆盖导航栏,如下所示。我把我的工具栏高度变大了,解决了第一个问题,但是有什么办法可以防止这个代码覆盖我的导航栏吗?

无论如何,有没有更好的方法在不改变工具栏高度的情况下向我的状态栏添加渐变?

在此处输入图像描述

标签: androidandroid-actionbargradientandroid-statusbar

解决方案


只需按照以下对您有用的事情,在我的情况下它的工作完美

使布局如下

main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@mipmap/ic_launcher"
    android:fitsSystemWindows="true"
    tools:context=".SplashActivity">

    <androidx.appcompat.widget.AppCompatImageView
        android:layout_width="@dimen/_150sdp"
        app:layout_constraintEnd_toEndOf="parent"
        android:src="@drawable/cell_background"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_height="@dimen/_150sdp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

和下面的拖旗

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

将波纹管主题应用于您的屏幕

<style name="AppThemeTrans" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@android:color/transparent</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlNormal">#FFFFFF</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:windowTranslucentNavigation">false</item>
        <item name="android:navigationBarColor">@color/navigationBarColor</item> <!--Change Navigationbar background color here-->
    </style>

推荐阅读