开发者这里可以把Android 9及更高版本上的的小白条理解为虚拟按钮,适配方法也一样,这里有四种适配方法,其中部分方法可能在API30中弃用了,请自行替换选择。

不适配,显示大黑边

不多解释

沉浸适配,显示透明黑边

代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

需要给适配的View添加属性android:fitsSystemWindows="true"

When this flag is enabled for a window, it automatically sets the system UI visibility flags View#SYSTEM_UI_FLAG_LAYOUT_STABLE and View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.

效果显示:

Android 适配小白条Android 适配小白条

沉浸适配,无黑边

代码

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(Color.TRANSPARENT);
    getWindow().setNavigationBarColor(Color.TRANSPARENT);
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|
        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    );

需要给适配的View添加属性android:fitsSystemWindows="true"

效果:

Android 适配小白条Android 适配小白条

给虚拟键设置颜色

代码:

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(Color.BLUE);     //设置状态栏的背景颜色
    getWindow().setNavigationBarColor(Color.BLUE);  //设置虚拟键的背景颜色

效果:
Android 适配小白条Android 适配小白条

相关文章:

  • 2021-10-14
  • 2022-01-08
  • 2021-07-02
  • 2021-09-01
  • 2021-10-09
  • 2021-12-04
猜你喜欢
  • 2022-12-23
  • 2021-10-29
  • 2021-05-08
  • 2021-06-07
  • 2021-05-28
  • 2021-12-25
  • 2021-05-12
相关资源
相似解决方案