Android版本中的状态栏图标和文字色调< 23

时间:2016-07-24 15:46:26

标签: android

Android中状态栏的默认色调是白色(所以它是状态栏会变暗的某种表现形式): enter image description here I've found我可以在大于或等于23的Android版本中更改色调。 但后来我发现我的设备上的几个应用程序(Android 5.1,API 22)使用黑色调。他们是怎么做到的?

更新 这就是我的意思: 其他一些应用程序有状态栏和黑色图标,时间标签等。

enter image description here

这是我的App示例,带有白色状态栏:

enter image description here

我无法将windowLightStatusBar设置为true,以使其看起来像来自具有API<的设备中的第一张照片的app 23。

3 个答案:

答案 0 :(得分:0)

对于API级别<23,请将其添加到活动中以获取浅色背景上的深色图标:

Window window = this.getWindow();
View view = window.getDecorView();
setLightStatusBar(view, this);

然后创建一个函数setLightStatusBar,该函数将在浅色背景上显示深色图标:

public static void setLightStatusBar(View view, Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            int flags = view.getSystemUiVisibility();
            flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
            view.setSystemUiVisibility(flags);

            // You can change the background color of the status bar here
            activity.getWindow().setStatusBarColor(Color.WHITE);
        }
    }

对于23级及以上的API,只需将其添加到您的样式中

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowLightStatusBar">true</item>
        <item name="android:statusBarColor">@android:color/white</item>
    </style>

</resources>

答案 1 :(得分:-1)

您可以使用此方法在kitkat和棒棒糖及以上设备中为statusBar提供您自己的颜色

public void translucentStatusBar() {

            if(Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
                        WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
                getWindow().setStatusBarColor(Color.TRANSPARENT);
            }

            View view = findViewById(R.id.vFakeStatusBar);
            view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                    (int) getResources().getDimension(R.dimen.default_status_bar_height)));
        }

在statusBar中的高度为24dp的上述代码段视图中(默认)。

答案 2 :(得分:-2)

this回答,添加values-v23/style.xml

<item name="android:windowLightStatusBar">true</item>

希望有所帮助