3
 Window window = MainActivity.this.getWindow();
                   window.setStatusBarColor(MY_COLOR_IT_CAN_BE_ANY);

                   if (Build.VERSION.SDK_INT < 30)
                   {
                       window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
                   }
                   else {
                       window.setDecorFitsSystemWindows(false);
                       WindowInsetsController controller = getWindow().getInsetsController();
                       if(controller != null) {
                           controller.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
                                   WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS);
                       }
                   }

我正在使用此代码在 android 11 及以下 android 11 中设置灯光状态栏。一切正常,只是有点问题,不推荐使用警告。

4

3 回答 3

0

当您使用已弃用的代码而您没有使用时,会显示弃用警告 - 您有正确的if声明,导致使用尚未弃用的方法< 30和新的方法30+

于 2020-09-14T06:43:45.773 回答
0
if(fullScreen)
{
    getWindow().getDecorView().getWindowInsetsController().hide(WindowInsets.Type.statusBars());
    getWindow().getDecorView().getWindowInsetsController().setSystemBarsBehavior(BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
else
{
    getWindow().getDecorView().getWindowInsetsController().show(WindowInsets.Type.statusBars());
    getWindow().getDecorView().getWindowInsetsController().setSystemBarsBehavior(BEHAVIOR_SHOW_BARS_BY_SWIPE);
}

以上代码用于 Android 11 的全屏,重要的是设置 setSystemBarsBehavior(BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE)否则在向下滑动状态栏获取显示并且在未重新创建活动之前不会消失。

于 2021-06-18T10:02:13.503 回答
-1

我只是做了一件事,因为我的 if 语句很好,我只是通过使用 @SuppressWarnings("deprecation") 来抑制警告

我只是将此注释用于包含此代码的特定方法。

还有另一个选项也很好:只需添加

//noinspection deprecation

上面已弃用的代码行。这将允许检查整个函数中的其他警告。这很好,我会更喜欢。

//noinspection deprecation 与 @SuppressWarnings("deprecation") 相比有什么优势?

这可以防止@SupressWarnings 的问题,即它忽略方法中的所有警告。因此,如果您有一些您不知道的已弃用的内容,@SupressWarnings 将隐藏它并且您不会收到警告。这就是 //noinspection 的优点

在此帖子答案中求爱并查看更多详细信息: 如何抑制已弃用的 Android 功能的特定 Lint 警告?

于 2020-09-14T12:04:27.863 回答