【问题标题】:How do I style the Window Bar when my Android App is in background当我的 Android 应用程序在后台时,如何设置窗口栏的样式
【发布时间】:2017-06-21 17:28:11
【问题描述】:

当我的应用出现在后台应用部分(或其他名称)时,我想更改窗口栏的颜色和图标。

例如,Facebook 的应用程序在此屏幕上显示了不同的图标,他们的 ic_launcher 图标是蓝色背景上的白色“f”,Instagram 应用程序将窗口栏背景颜色从白色更改为黑色,一些应用程序更改了他们的窗口栏标题颜色等。我试图搜索此信息,但我不确定如何调用此功能或如何搜索此功能,因此我没有找到解决方案。

任何帮助将不胜感激,在此先感谢大家。

【问题讨论】:

    标签: android


    【解决方案1】:

    如果有人遇到同样的问题,这就是解决方案:

    在概览屏幕(也称为最近屏幕、最近任务列表或最近应用)中设置应用外观样式的唯一方法是设置ActivityManager.TaskDescription。所以这就是你的做法:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    
            String label = getString(R.string.app_name);
            Bitmap icon = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_welcome_activity);
            int color = ResourcesCompat.getColor(getResources(), R.color.colorPrimary600, null);
    
            ActivityManager.TaskDescription taskDesc = new ActivityManager.TaskDescription(label, icon, color);
            setTaskDescription(taskDesc);
    
        }
    

    这必须在您的 Activity 的 onCreate() 方法或 onResume() 中完成,有人说它只适用于其中一个或另一个,但对我来说它适用于两者。您只需将这段代码插入到您的顶部 Activity 代码中,因为默认情况下,TaskDescription 是基于任务的 Activity 堆栈底部的 Activity,因此堆积的其他 Activity 不会影响样式,除非这些 Activity在运行时明确设置 TaskDescription。

    请注意,不能强制文本颜色,它是根据您的 colorPrimary 颜色自动生成的(白色/黑色)。因此,将标签颜色设置为白色(甚至 Google 似乎也使用)的另一种方法是设置较暗的 colorPrimary 600 作为 TaskDescription 颜色,就像我在上面的代码中所做的那样。较浅的颜色会将文本设置为黑色。

    还要确保在 setTaskDescription(taskDesc) 周围加上 SDK 版本检查,因为此功能仅在 Lollipop 上引入。

    可以在here 找到对此解决方案的更深入解释。希望这会有所帮助。

    【讨论】:

    • 在 2020 年遇到过这个问题,但这是我在网上看到的关于这个问题的最佳答案,谢谢!
    • @chung 很抱歉这么晚才回复。很高兴答案对您有所帮助!
    【解决方案2】:

    你必须使用ActivityManager.TaskDescription

    this 可能重复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多