完全透明的导航栏和状态栏

lf3rwulv  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(376)

我想让完全透明的状态栏和导航栏一样,谷歌播放。当我使用窗口设置来实现它时,键盘会覆盖编辑文本。
当此代码使用键盘输入覆盖的编辑文本时:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                      WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

另外,这个代码并没有使完全透明,它只是使半透明

getWindow().setNavigationBarColor(Color.TRANSPARENT)

还是这个

<item name="android:navigationBarColor">@android:color/transparent</item>

我需要这样的Windows:

z6psavjg

z6psavjg1#

你需要的是这样的东西:

class Utils {

     static void enableInmersiveMode(Activity act, boolean drawBehindNavBar) {
          View rootView = act.getWindow().getDecorView().getRootView();
          int uiFlags = rootView.getSystemUiVisibility();
          int flags =0;
          if(drawBehindNavBar) { flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; }
          flags = flags | uiFlags | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEEN;
          rootView.setSystemUiVisibility(flags);
     }
}

在你的 onCreate 您的活动:

@Override
void onCreate(Bundle b) {
    Utils.enableInmersiveMode(this, true);
    super.onCreate(b);
    // setContentView and the rest of your code here...
}

请记住,之后的视图将位于系统ui后面,您需要动态地向第一个和最后一个视图添加填充 View 这样用户就可以和他们互动了。

相关问题