2015-10-05 95 views

回答

1

好吧,我发现了一个sulotion终于,这里是它如何做的:

  1. 使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY隐藏导航栏作为跟随,你可以把代码中的onResume您的活动

    观decorView = getWindow()。getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; decorView.setSystemUiVisibility(uiOptions);

  2. 然后,使用WindowManger添加一个系统错误窗口,并在其上重合寄托都顶部

,你可以把这个unescapable视图任何你喜欢的,但如果你想这样做,而用户锁定屏幕,添加此标志:

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

的Et瞧

+0

你是一个天才男人... – viv

0

嗯,我从来没有实现这一点,但它似乎你将需要设置一些其他的标志来获得这样的观点:当您使用SYSTEM_UI_FLAG_IMMERSIVE标志

,它隐藏的系统吧根据您已设置的其他UI标志(SYSTEM_UI_FLAG_HIDE_NAVIGATION,SYSTEM_UI_FLAG_FULLSCREEN或两者)。当用户在系统栏区域向内滑动时,系统栏会重新出现并保持可见状态。

这里是一个片段,您可以使用设置这些标志:

// This snippet hides the system bars. 
private void hideSystemUI() { 
    // Set the IMMERSIVE flag. 
    // Set the content to appear under the system bars so that the content 
    // doesn't resize when the system bars hide and show. 
    mDecorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 
      | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
      | View.SYSTEM_UI_FLAG_IMMERSIVE); 
} 

// This snippet shows the system bars. It does this by removing all the flags 
// except for the ones that make the content appear under the system bars. 
private void showSystemUI() { 
    mDecorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

欲了解更多信息,请从Android开发者网站查询Using Immersive Full-screen Mode

希望得到这个帮助。

+0

感谢您的帮助,我已经试过这是我说的。这实际上可以隐藏导航栏,但当用户点击屏幕底部时,它会重新显示 – user1659006

+0

@ user1659006哦对不起,我以为你只有一个标志(** SYSTEM_UI_FLAG_IMMERSIVE **)启用。 – WannaGetHigh