如何设置我的状态栏透明的,但通过导航栏黑守?(How do I set my status bar

2019-09-30 02:58发布

正如我的问题暗示,我试图弄清楚如何将我的状态栏颜色透明,同时保持我的导航栏黑/自然色(不影响屏幕高度),我提到了这个网站的Android完全透明的状态栏? 这部分是工作的解决方案之一:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

但下面推导航栏在我的屏幕内容使其透明。 我想屏幕尺寸保持不变,同时保持导航栏的自然色。 只是想在状态栏透明,但似乎像所有其他的方法使其灰白色,甚至当我把它透明的( setstatusbarcolor选项)。

如何去做任何想法? 我分SDK版本是23。

第二视图是添加上述在状态栏作品但低于使导航栏透明以及屏幕载玻片(甚至设置代码之后视图fitsSystemWindows = false没有帮助)。

提前致谢!

Answer 1:

您需要添加下面的样式在你的活动主题。

styles.xml找到你的活动主题,并添加以下内容。 由于最低SDK版本是23,你的情况,你不需要担心的Android的早期版本。

<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowTranslucentStatus">true</item>

下面是我所得到的屏幕截图。

下面是我在我的情况下,主题风格。

<style name="NoActionBar" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

希望解决您的问题。



Answer 2:

试着做下面提及的事情可以帮助你在你的例子。 让我,如果你仍然面临的问题。 如果将解决你的问题,那么请提供答案。

AndroidManifest.xml

<activity
   ....            
   android:theme="@style/TranslucentStatusBarTheme">
</activity>

values-v23\styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="TranslucentStatusBarTheme" parent="AppTheme">
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowLightStatusBar">true</item>
    </style>
</resources>

Activity.java

private static void setWindowFlag(Activity activity, boolean on) {
    Window win = activity.getWindow();
    WindowManager.LayoutParams winParams = win.getAttributes();
    if (on) {
        winParams.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    } else {
        winParams.flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    }
    win.setAttributes(winParams);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    // Check if the version of Android is Marshmallow or higher
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int newUiOptions = getWindow().getDecorView().getSystemUiVisibility();
        newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

        getWindow().getDecorView().setSystemUiVisibility(newUiOptions
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
    // Check if the version of Android is Lollipop or higher
    else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
        setWindowFlag(this, false);
        getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.colorTranslucent));
    }

    super.onCreate(savedInstanceState);
}


文章来源: How do I set my status bar transparent but keep by navigation bar black?