我想在我的活动中永久隐藏导航栏(而不是整个系统ui)。现在我正在使用这段代码
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
它隐藏栏,但是当用户触摸屏幕时,它会再次显示。有没有办法永久隐藏它,直到活动onStop()
;
对于寻找更简单解决方案的人来说,我认为您可以只在onStart()
中使用这一行代码
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
这叫做沉浸式模式。你可以看看官方留档的其他可能性。
这样做。
public void FullScreencall() {
if(Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
View v = this.getWindow().getDecorView();
v.setSystemUiVisibility(View.GONE);
} else if(Build.VERSION.SDK_INT >= 19) {
//for new api versions.
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
}
这是100%有效的,对于较低的API版本,您也可以这样做,即使这是一个很晚的答案,我希望它能帮助其他人。
如果您希望这是永久的,只需在您的onResume()方法中调用FullScreencall()
。
片段:
全屏片段。JAVA
HideNavigationBarComponent。JAVA
这是针对Android4.4的
尝试沉浸式模式https://developer.android.com/training/system-ui/immersive.html
快速代码段(对于活动类):
private int currentApiVersion;
@Override
@SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
currentApiVersion = android.os.Build.VERSION.SDK_INT;
final int flags = 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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
// This work only for android 4.4+
if(currentApiVersion >= Build.VERSION_CODES.KITKAT)
{
getWindow().getDecorView().setSystemUiVisibility(flags);
// Code below is to handle presses of Volume up or Volume down.
// Without this, after pressing volume buttons, the navigation bar will
// show up and won't hide
final View decorView = getWindow().getDecorView();
decorView
.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener()
{
@Override
public void onSystemUiVisibilityChange(int visibility)
{
if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
{
decorView.setSystemUiVisibility(flags);
}
}
});
}
}
@SuppressLint("NewApi")
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
if(currentApiVersion >= Build.VERSION_CODES.KITKAT && hasFocus)
{
getWindow().getDecorView().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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
如果在按导航栏显示的音量增大或减小时出现问题。我在onCreate
中添加了代码,请参见setOnSystemActivityChangeListener
这是另一个相关问题:
在按音量或还原后,沉浸式模式导航变得不稳定
是否可以永久删除活动上的导航栏?我想删除与按钮出现在平板电脑屏幕上的按钮,而不是操作栏。这里。 我知道不建议那样做,我没有做这个决定,但我需要这样做。在我的布局上,还有一个按钮离开活动。我的应用程序的其余部分可以有导航栏。 我找到了这段代码,并对其进行了一些修改。问题是,即使我隐藏了导航栏,也会留下一个黑色的空间。我猜系统计算屏幕大小时考虑了导航栏?
我正在做一个应用程序,并有权访问系统权限。我想让导航栏永久隐藏,它甚至不应该出现在用户交互上。 现在我使用这段代码,它隐藏了条,但当用户触摸屏幕时,它会再次显示。是否有任何方法可以永久隐藏它,直到活动停止(); 如有任何关于最佳实施的技术咨询或意见/建议,将不胜感激。
我为android制作了一个全屏应用程序,它隐藏了两个导航栏 但这个代码对Jelly Bean不起作用,它只会隐藏一次条,一旦你触摸屏幕,它们就会重新出现。所以我知道下面的代码支持Jelly Bean,但它只隐藏了状态栏: 有人能告诉我如何在Jelly Bean上永久隐藏导航栏吗?
我正在为一所学校开发一个Android应用程序,我想打开这个应用程序,以防止用户在设备上做任何事情,除了我在我的应用程序内提供的东西,我的意思是什么也不做...所以首先导航栏应该被禁用和隐藏 我看到了这一点,但它适用于4.4版,它并不能解决问题,因为如果你滑动屏幕,你将返回菜单。(如何在android活动中永久隐藏导航栏?) 这也不起作用(在活动中永久隐藏导航栏)(有没有办法在Android IC
在android上隐藏永久系统栏最好的方法是什么?我想要一个没有系统栏的全屏app。到目前为止,我所得到的是隐藏栏,但如果我向上滑动,它就会出现。 有什么建议吗?
如何使底部导航栏在Android Studio的visual XML编辑器中消失?我已经将AppTheme设置为NoActionBar。导航栏很烦人,因为我的手机没有导航栏,所以当我在可视编辑器中的应用程序底部放置一些东西时(https://i.imgur.com/1QvdIOd.png),当我在手机上运行应用程序时会发生这种情况:https://i.imgur.com/Qk5S1Oe.jpg.谁