隐藏平板电脑中的系统栏

在我的平板电脑上,有下面的控制栏,可以控制回家,等等(我不知道正确的名称,状态栏,控制栏,动作栏等)

在程序中,它使用以下方法来全屏显示。

requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.PROGRESS_INDETERMINATE_OFF); 

但是我不知道为什么酒吧还在这里。 正因为如此,我无法拥有正确的屏幕尺寸。

谁能告诉我如何删除它?

酒吧

在运行Android 4+的平板电脑中,无法隐藏系统/导航栏

从文档 ( 系统UI可见性的控制部分):

SYSTEM_UI_FLAG_HIDE_NAVIGATION是一个新的标志,要求导航栏完全隐藏。 请注意,这只适用于某些手机使用的导航栏( 它不会隐藏平板电脑上的系统栏 )。

但是,您可以尝试在游戏和video播放期间调暗系统栏。

SYSTEM_UI_FLAG_LOW_PROFILE标志取代了STATUS_BAR_HIDDEN标志。 系统栏或导航栏设置为“低调”模式,导航button变暗,系统栏中的其他元素也隐藏起来,启用此function对于创build更多身临其境的游戏,对于系统导航button不会分心。

似乎有一个UNDOCUMENTED标志为此:

 yourGreatView.setSystemUiVisibility(8); 
  • 没有黑色的页脚 (“隐藏的”系统栏)
  • 如果键盘显示,调整视图的大小 (不重叠的input)

经过validation的Android 4.1.2(API 16)
经过validation的Android 4.1.1(API 16)
validation不适用于Android 4.0.4(API 15)

(所有片剂)

一个非常核的select就是从/ system / app /中删除SystemUI.apk。 但警告这将完全从平板电脑中删除它。 我在平板电脑上使用前端面板,然后将平板电脑设置为启动到我的应用程序。

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

正如其他人所说,在root模式下使用命令“pm disable com.android.systemui”,所以下面的代码在你的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 disable com.android.systemui”。

由于系统栏是用来在android中导航的,所以没有一个简单的方法来实现这一点,你可以解除/调暗控件:

 View v = findViewById(R.id.view_id); v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); 

但是你可以在没有系统的情况下获得屏幕的大小(不知道从什么版本开始,我认为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); 

如果您的应用程序具有root访问权限,那么还有一种方法可以实现它: http : //ppareit.github.com/HideBar/

你不能隐藏它,但你可以简单地禁用它,除了家。 试试这个链接。 。 使用SYSTEM_UI_FLAG_LOW_PROFILE你可以调暗你的系统栏,并使用onWindowFocusChanged()可以把焦点和折叠它。

下面的代码为我工作 –

你可以写在onCreate()或onResume(如果需要的话)

 getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);