【问题标题】:How to set the status bar color in the whole device to green as the default phone app does?如何将整个设备中的状态栏颜色设置为默认手机应用程序中的绿色?
【发布时间】:2021-02-03 15:56:13
【问题描述】:

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

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

有可能实现吗?

【问题讨论】:

    标签: android voip statusbar voip-android


    【解决方案1】:

    使用这样的东西(对于 > 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);
        }
    }
    

    【讨论】:

    • 但是由于我们将使用window,所以当用户离开应用程序时,状态栏颜色将具有常规颜色,对吧?
    • 这种方式行不通,因为无法从服务中获取窗口对象,但有一种方法可以创建透明活动并将状态栏保持为您想要的颜色,但我我不确定那是你想要的。我对此很好奇,当我接下来的几天有时间时,我会尝试做一些事情..如果你找到解决方案,我希望你能在这里发帖
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多