在我的平板电脑上,它有以下栏来控制回来,回家等(我不知道正确的名称,状态栏?控制栏?操作栏?或其他)
在程序中,它使用以下方法来全屏显示。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.PROGRESS_INDETERMINATE_OFF);
但我不知道为什么酒吧还在这里。因此,我无法获得正确的屏幕尺寸。
谁能告诉我如何删除它?
答案 0 :(得分:38)
似乎有一个 UNDOCUMENTED 标志:
yourGreatView.setSystemUiVisibility(8);
在Android 4.1.2(API 16)上验证了 在Android 4.1.1(API 16)上验证了 已验证无法在Android 4.0.4(API 15)上运行
(所有平板电脑)
答案 1 :(得分:11)
在运行Android 4+的平板电脑中,无法隐藏系统/导航栏。
从documentation(控制系统UI可见性部分):
SYSTEM_UI_FLAG_HIDE_NAVIGATION
是一个请求的新标志 导航栏完全隐藏。请注意,这仅适用于 某些手机使用的导航栏(它不会隐藏系统栏 在平板电脑上)。
但是,您可以尝试在游戏和视频播放过程中对系统栏进行调暗。
SYSTEM_UI_FLAG_LOW_PROFILE
标志取代了STATUS_BAR_HIDDEN 旗。置位时,该标志启用系统的“低调”模式 酒吧或导航栏。导航按钮暗淡和其他元素 系统栏也隐藏。启用此功能对于创建更多内容非常有用 沉浸式游戏,不会分散系统导航按钮。
答案 2 :(得分:4)
在Android 4.4及更高版本中,您可以完全隐藏导航栏,并使用全屏和沉浸感保持隐藏状态:
@Override
protected void onResume() {
super.onResume();
View decorView = getWindow().getDecorView();
decorView.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);
}
答案 3 :(得分:3)
非常核的选择是从/ system / app /中删除SystemUI.apk。但警告这将完全从平板电脑中删除它。我在平板电脑上进行此操作时,我正在使用前面板信息亭,然后我将平板电脑设置为启动到我的应用中。
答案 4 :(得分:2)
public class Utils {
public static void hideNavigations(Activity context) {
View decorView = context.getWindow().getDecorView();
decorView.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);
}
}
在您的活动中:
@Override
protected void onResume() {
super.onResume();
Utils.hideNavigations(this);
}
答案 5 :(得分:1)
正如其他人所说使用命令" pm禁用com.android.systemui"在root模式下,所以下面的代码在你的Android应用程序中执行这个命令,只需调用以下方法,你的平板电脑需要扎根。
private void hideNavigationBar(){
try {
Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("pm disable com.android.systemui\n");
os.flush();
os.writeBytes("exit\n");
os.flush();
process.waitFor();
//////////////////////////////////////
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
此代码隐藏了android系统上的导航栏,重新出现系统栏使用" pm enable com.android.systemui"而不是" pm禁用com.android.systemui"在上一段代码中。
答案 6 :(得分:0)
由于系统栏用于在android中导航,没有一种简单的方法可以实现这一点,你可以对控件进行无效/暗淡处理:
View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
但你可以在不使用systembar的情况下获得屏幕大小(不确定从哪个版本开始,我认为3.1)
Method rawW = Display.class.getMethod("getRawWidth");
Method rawH = Display.class.getMethod("getRawHeight");
int width = (Integer)mGetRawW.invoke(dp);
int height = (Integer)mGetRawH.invoke(dp);
如果您的应用具有超级用户权限,则还有一种方法可以实现:http://ppareit.github.com/HideBar/
答案 7 :(得分:0)
你不能隐藏它,但你可以简单地禁用它,除了家。试试this link.。使用SYSTEM_UI_FLAG_LOW_PROFILE可以调暗系统栏,使用onWindowFocusChanged()
可以获得焦点并将其折叠。
答案 8 :(得分:0)
下面的代码对我有用 -
您可以在onCreate()或onResume(如果需要)
中编写它getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);