问题
I have an application that uses theme attribute (colorPrimaryDark) to color the Status Bar on Android v21+:
This is working fine. Now, when user long-presses a list item and enters the contextual action mode, I am able to color the CAB bar using attribute actionModeBackground so it looks like this:
So the action bar is gray, which is what I want, but the status bar is still colored using the theme dark color. I don't want that, I want to change it to dark gray or black.
How can I do this? I don't see any theme attribute that would work here.
回答1:
private int statusBarColor;
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//hold current color of status bar
statusBarColor = getWindow().getStatusBarColor();
//set your gray color
getWindow().setStatusBarColor(0xFF555555);
}
...
}
...
@Override
public void onDestroyActionMode(ActionMode mode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//return to "old" color of status bar
getWindow().setStatusBarColor(statusBarColor);
}
...
}
});
来源:https://stackoverflow.com/questions/29618470/change-status-bar-color-when-entering-contextual-action-mode