ear*_*jim 41
您可以通过在styles.xml中设置您为应用程序使用的样式的android:statusBarColor
or android:colorPrimaryDark
属性来更改它.
(默认android:statusBarColor
继承值android:colorPrimaryDark
)
例如(因为我们在这里使用AppCompat主题,android
省略了名称空间):
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimaryDark">@color/your_custom_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在API级别21+上,您还可以使用Window.setStatusBarColor()
代码中的方法.
从它的文档:
要使此操作生效,窗口必须绘制系统栏背景,
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
并且WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
不得设置.如果颜色不是不透明的,请考虑设置View.SYSTEM_UI_FLAG_LAYOUT_STABLE
和View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
.
小智 23
状态栏是操作系统拥有的系统窗口.
在5.0之前的Android设备上,应用程序无权更改其颜色,因此这不是该AppCompat
库可以支持旧平台版本的内容.最好的办法AppCompat
是为ActionBar
应用程序中的常用UI小部件着色提供支持.
在5.0之后的Android设备上,更改状态栏的颜色还需要在Window上设置两个额外的标志; 你需要添加FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
标志并清除FLAG_TRANSLUCENT_STATUS
标志.
Window window = activity.getWindow();
// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// finally change the color
window.setStatusBarColor(activity.getResources().getColor(R.color.my_statusbar_color));
Run Code Online (Sandbox Code Playgroud)
您还可以在主活动中添加这些代码行
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.dark_nav)); // Navigation bar the soft bottom of some phones like nexus and some Samsung note series
getWindow().setStatusBarColor(ContextCompat.getColor(this,R.color.statusbar)); //status bar or the time bar at the top
}
Run Code Online (Sandbox Code Playgroud)
将状态栏颜色添加到样式中并完成
<item name="android:statusBarColor">@color/black</item>
Run Code Online (Sandbox Code Playgroud)
对于API级别21
小智 5
更改状态栏颜色仅适用于棒棒糖上方的 android
1.您可以通过此行以编程方式更改状态栏颜色:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.your_color));
}
Run Code Online (Sandbox Code Playgroud)
2.您可以使用平滑过渡动画来做到这一点:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int startColor = getWindow().getStatusBarColor();
int endColor = ContextCompat.getColor(context, R.color.your_color);
ObjectAnimator.ofArgb(getWindow(), "statusBarColor", startColor, endColor).start();
}
Run Code Online (Sandbox Code Playgroud)
3.或者您可以将其添加到 values/styles.xml 文件中的主题样式中。item colorPrimaryDark 将用于您的应用程序状态栏颜色
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
63661 次 |
最近记录: |