1

我正在制作一个可以拨打和接听 VoIP 语音电话的应用程序。因为我想模仿默认电话行为,所以我想在打电话时做与系统相同的事情:在打电话时将状态栏涂成绿色,以突出显示他正在通话的用户。

只是为了澄清以避免被标记为重复:这个问题与更改状态栏颜色有关,不仅在我们的活动中,而且在整个设备中,就像在通话中的某些电话一样。

有可能实现吗?

4

1 回答 1

0

使用这样的东西(对于版本> 23)

这是我的老方法。有些东西已弃用,找到解决方案并修复它

protected void setStatusBarColor(View view, int color, boolean isLight) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if(color == 0) color = ContextCompat.getColor(this, R.color.colorPrimaryDark);
        
        if(isLight) {
            int flags = view.getSystemUiVisibility();
            flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
            view.setSystemUiVisibility(flags);
        }
        //getWindow().setStatusBarColor(Color.WHITE);

        Window window = getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(color);
    }
}
于 2021-02-03T19:57:43.760 回答