如何为应用程序动态设置状态栏颜色,使用视图寻呼机,同时滑动(水平)状态栏颜色和标题栏和按钮应更改颜色。根据我的代码标题和按钮颜色完美变化,但问题是状态栏颜色从数组列表中获取下一个颜色。如何解决这个问题任何人都可以帮助我。这是我的代码
private int[] colors = new int[]{0xffffd200, 0xff37beb7, 0xff00ccff, 0xff8585c1, 0xfff2a03c, 0xff2a80b9, 0xfff15972,
0xffe9776c, 0xff9dcc96,0xff76c069};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = ((Activity) context).getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
int coloring = position % colors.length;
int new_color = colors[coloring];
window.setStatusBarColor(new_color);
title_bar.setBackgroundColor(new_color);
set_share.setBackgroundColor(new_color);
}
else{
int color = position % colors.length;
itemView.setBackgroundColor(colors[color]);
title_bar.setBackgroundColor(colors[color]);
set_share.setBackgroundColor(colors[color]);
}
答案 0 :(得分:13)
要更改状态栏颜色,请使用setStatusBarColor(int color)。根据javadoc,我们还需要在窗口上设置一些标志。
代码片段:
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color));
这取自以下参考: How to change status bar color to match app in Lollipop? [Android]
答案 1 :(得分:5)
进入状态栏颜色,您只能将其添加到API级别超过21的设备。对于满足此条件的设备,您可以动态更改StatusBar颜色,如下所示。
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.setStatusBarColor(getResources().getColor(R.color.Statusbar));
}
答案 2 :(得分:2)
当我想设置状态栏颜色时,我使用了https://github.com/jgilfelt/SystemBarTint
我这样用过:
public static void colorStatusBar(Window window, Activity activity) {
Log.v(Constants.LOG_TAG, "Start defining color bar status");
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
SystemBarTintManager tintManager = new SystemBarTintManager(activity);
tintManager.setStatusBarTintEnabled(true);
tintManager.setTintColor(activity.getResources().getColor(R.color.colorPrimaryDark));
}
}
但请注意,只有当您的应用在API> = 19
的手机上运行时才能设置状态栏颜色