隐藏平板电脑中的系统栏
在我的平板电脑上,有下面的控制栏,可以控制回家,等等(我不知道正确的名称,状态栏,控制栏,动作栏等)
在程序中,它使用以下方法来全屏显示。
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);
- Android – 打印完整的exception回溯logging
- 带有Google Maps API v2的ViewPager:神秘的黑色视图
- 在ListView中显示“No Item”消息
- 错误检查是否在Android中启用了蓝牙(REQUEST_ENABLE_BT无法parsing为variables)
- Google Play Alpha App BM-PPH-01错误
- Android Studio预览版中的“无法parsing资源”
- 如何以编程方式“重新启动”Android应用程序?
- 安装Android Studio后找不到adb.exe
- 用Android Studio进行debugging永远卡在“等待debugging器”