隐藏ICS返回主页任务切换器按钮

时间:2011-12-12 01:50:45

标签: android fullscreen android-4.0-ice-cream-sandwich

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

我似乎无法在网络上或Google的文档中找到它。

6 个答案:

答案 0 :(得分:31)

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);

答案 1 :(得分:23)

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

答案 2 :(得分:6)

你想要SYSTEM_UI_FLAG_HIDE_NAVIGATION

这个标志是从Ice Cream Sandwich,API 14开始添加的。在14之前,在Honeycomb,API 11中添加了一个标志STATUS_BAR_HIDDEN。之前,软导航按钮并不存在,所以全屏模式完全由Themes处理(具体为Theme.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 );

答案 3 :(得分:0)

这个答案可能无法直接回答这个问题。但我发布它可以帮助其他人节省时间。

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

上述任何内容都不适合我。

我很久以前用Google搜索了这个主题几天后写了一堂课。我最终上了这堂课。

UtilsTaskBar.java

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

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

如果您使用此类隐藏导航栏,则在重新启动设备或再次使用相同的类重新显示之前,它不会再次显示。

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

答案 4 :(得分: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);
}

答案 5 :(得分:-1)

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

where is api call to do lights out mode in honeycomb