进入上下文操作模式时更改状态栏颜色

Gre*_*nis 17 android themes contextual-action-bar

我有一个应用程序使用主题属性(colorPrimaryDark)为Android v21 +上的状态栏着色:

在此输入图像描述

这工作正常.现在,当用户长按列表项并进入上下文操作模式时,我可以使用属性actionModeBackground为CAB栏着色,所以它看起来像这样:

在此输入图像描述

因此操作栏是灰色的,这就是我想要的,但状态栏仍然使用主题深色进行着色.我不想那样,我想把它变成深灰色或黑色.

我怎样才能做到这一点?我没有看到任何可以在这里工作的主题属性.

use*_*802 33

    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); 
        }
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法通过xml(样式)?我搜索过,但没有找到可行的解决方案. (4认同)