29

只是想知道如何以编程方式隐藏 ICS back/home/etc 软件按钮。就像播放视频时 Youtube 应用程序一样。我想在播放视频时隐藏它们,但如果用户点击屏幕则将它们显示出来。

我似乎在网络上的任何地方或 Google 的文档中都找不到它。

4

6 回答 6

32

pinxue 很准确……你想要SYSTEM_UI_FLAG_HIDE_NAVIGATION。例子:

myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

不过要注意的一点是,在任何(我的意思是任何)用户交互时,导航栏都会重新显示。

使用 Honeycomb,您可以获得的最接近的方法是进入“熄灯”模式(现在称为“低调”... SYSTEM_UI_FLAG_LOW_PROFILE)。这只会使导航栏上的项目不那么明显(您可能已经看到的小“点”)。如果您想尽最大努力保持与 Honeycomb 的向后兼容性,您可以使用反射来使用“最佳”方法:

// Ask the System Bar to hide
int whichHiddenStatusToUse = android.view.View.STATUS_BAR_HIDDEN;
try {
    // if this next line doesn't thrown an exception then we are on ICS or  
    // above, so we can use the new field.
    whichHiddenStatusToUse = View.class.getDeclaredField("SYSTEM_UI_FLAG_HIDE_NAVIGATION").getInt(mDrawingSurface);
} catch (Exception ex) {
}
// now lets actually ask one of our views to request the decreased visibility
myView.setSystemUiVisibility(whichHiddenStatusToUse);
于 2012-01-03T03:20:16.040 回答
24

尝试使用标志 SYSTEM_UI_FLAG_HIDE_NAVIGATION 设置全屏窗口

于 2011-12-12T02:08:11.910 回答
6

你想要SYSTEM_UI_FLAG_HIDE_NAVIGATION

此标志是从 Ice Cream Sandwich,API 14 添加的。在 14 之前,在 Honeycomb,API 11 中添加了标志STATUS_BAR_HIDDEN。在此之前,软导航按钮不存在,因此全屏模式完全由主题处理(特别是主题.NoTitleBar.Fullscreen)。

采用:

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH )
    mBaseLayout.setSystemUiVisibility( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );
else if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
    mBaseLayout.setSystemUiVisibility( View.STATUS_BAR_HIDDEN );
于 2013-11-11T15:08:29.657 回答
0

这个答案可能不会直接回答这个问题。但我发布它是为了帮助其他人节省时间。

我需要完全隐藏导航栏。即使用户单击屏幕,它也应该保持隐藏状态。

以上没有对我有用。

很久以前,我在谷歌上搜索了这个主题几天后写了一个课程。我最终上了这门课。

UtilsTaskBar.java

我无法在任何地方测试它,但它适用于 4.**

注意:我将此类用于特殊用途的应用程序,不适用于典型用户。

如果你用这个类隐藏导航栏,它不会再次显示,直到你重新启动设备或者你用同一个类再次显示它。

所以只有当你真的需要它时才使用它。

于 2016-01-27T10:12:16.570 回答
0

在 AndroidManifest.xml 中添加:

<uses-permission android:name="android.permission.BROADCAST_STICKY"/>

然后您可以使用此功能显示和隐藏主页/返回导航栏

private void changeSystemBarVisibilty(boolean show)
{
    Context context = getApplicationContext();
    final Intent intent = new Intent("android.intent.action.SYSTEM_BAR_VISIBILITY");
    intent.putExtra("show", show);
    context.sendStickyBroadcast(intent);
}
于 2016-09-22T19:51:16.437 回答
-1

当他们在应用程序中谈论它时,它被称为“熄灯模式”。我找不到任何与 ICS 相关的内容,但这里有一个 Honeycomb 讨论的链接。

在蜂窝中执行熄灯模式的 api 调用在哪里

于 2011-12-12T22:26:00.047 回答