【发布时间】:2012-04-01 12:51:14
【问题描述】:
我正在开发 Android ICS 的启动器,但我在使用平板电脑时遇到了问题。
我无法隐藏状态栏。我已经在 Android 2.3.X 中尝试过,没关系。该问题仅在 Android 4.0 中出现。
如何隐藏它?
【问题讨论】:
标签: android android-4.0-ice-cream-sandwich statusbar
我正在开发 Android ICS 的启动器,但我在使用平板电脑时遇到了问题。
我无法隐藏状态栏。我已经在 Android 2.3.X 中尝试过,没关系。该问题仅在 Android 4.0 中出现。
如何隐藏它?
【问题讨论】:
标签: android android-4.0-ice-cream-sandwich statusbar
在 Android 4.0 中无法获得 100% 真全屏。
使用以下方法使通知栏(又名状态栏、系统栏)变暗
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
并用它来隐藏它
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
而且,如果我猜对了,您正在尝试实现“信息亭模式”。您可以使用名为“surelock”的应用程序获得一些帮助。这会阻止所有“home”和“back”操作。
它仍然不完美,但这可能是我们使用 Android ICS 可以实现的最佳效果。
【讨论】:
可以在有根的安卓设备上隐藏状态栏。程序Hidebar 通过杀死systemui 进程来做到这一点。该程序是开源的,因此您可以在source code 中阅读有关它的所有信息。
【讨论】:
您无法摆脱平板电脑上的系统栏。您也许可以摆脱手机上的导航栏和状态栏。请阅读the Android 4.0 SDK release notes 的“系统 UI 可见性控制”部分。
【讨论】:
我知道我的回答来得有点晚,但是在收集了来自不同地方的信息之后,我想出了这个,它只适用于有根设备:
private void KillStatusBar()
{
Process proc = null;
String ProcID = "79"; //HONEYCOMB AND OLDER
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
ProcID = "42"; //ICS AND NEWER
}
try {
proc = Runtime
.getRuntime()
.exec(new String[] { "su", "-c",
"service call activity "+ProcID+" s16 com.android.systemui" });
} catch (IOException e) {
Log.w(TAG,"Failed to kill task bar (1).");
e.printStackTrace();
}
try {
proc.waitFor();
} catch (InterruptedException e) {
Log.w(TAG,"Failed to kill task bar (2).");
e.printStackTrace();
}
}
这应该消除任何已root设备上的底部栏并将其转换为“kiosk”模式。
【讨论】:
要在android 4.0中隐藏状态栏和导航栏,我们应该使用下面的代码:
LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
【讨论】:
基于 ppareit 的回答。
您无法在大多数库存设备上隐藏导航栏。但是,如果您可以选择生根设备,则可以解决此问题。以下是一种解决方案的步骤:
在 HideBar 中有一个在“Kiosk”模式下运行的选项,在该模式下无法重新显示导航栏。不用说,您确实需要小心这一点。
【讨论】: