Android中状态栏的默认色调是白色(所以它是状态栏会变暗的某种表现形式): I've found我可以在大于或等于23的Android版本中更改色调。 但后来我发现我的设备上的几个应用程序(Android 5.1,API 22)使用黑色调。他们是怎么做到的?
更新 这就是我的意思: 其他一些应用程序有状态栏和黑色图标,时间标签等。
这是我的App示例,带有白色状态栏:
我无法将windowLightStatusBar
设置为true,以使其看起来像来自具有API<的设备中的第一张照片的app 23。
答案 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)