700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android 隐藏手机底部虚拟按键

android 隐藏手机底部虚拟按键

时间:2024-02-03 04:52:07

相关推荐

android 隐藏手机底部虚拟按键

今天,简单讲讲android如何隐藏手机下面的虚拟按键。

其实,自己在做界面适配时,老是发现了华为手机存在适配的问题,主要就是华为手机有一个底部的虚拟按键占用了界面的部分空间,所以在网上搜索了如何隐藏华为手机下方的虚拟按键,最终找到的代码。这里记录一下。

/*** 隐藏虚拟按键,并且全屏*/protected void hideBottomUIMenu(){//隐藏虚拟按键,并且全屏if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower apiView v = this.getWindow().getDecorView();v.setSystemUiVisibility(View.GONE);} else if (Build.VERSION.SDK_INT >= 19) {//for new api versions.View decorView = getWindow().getDecorView();int uiOptions = 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 // hide nav bar//| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar| View.SYSTEM_UI_FLAG_IMMERSIVE;decorView.setSystemUiVisibility(uiOptions);getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}}

/*** 检查是否存在虚拟按键栏* @param context* @return*/public static boolean hasNavBar(Context context) {Resources res = context.getResources();int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android");if (resourceId != 0) {boolean hasNav = res.getBoolean(resourceId);// check override flagString sNavBarOverride = getNavBarOverride();if ("1".equals(sNavBarOverride)) {hasNav = false;} else if ("0".equals(sNavBarOverride)) {hasNav = true;}return hasNav;} else { // fallbackreturn !ViewConfiguration.get(context).hasPermanentMenuKey();}}/*** 判断虚拟按键栏是否重写* @return*/private static String getNavBarOverride() {String sNavBarOverride = null;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {try {Class c = Class.forName("android.os.SystemProperties");Method m = c.getDeclaredMethod("get", String.class);m.setAccessible(true);sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");} catch (Throwable e) {}}return sNavBarOverride;}

简单讲讲,这个代码调用时最好先调用hasNavBar(Contextcontext)判断手机是否存在虚拟按键,然后调用hideBottomUIMenu()隐藏虚拟按键,不然在没有虚拟按键的手机上直接使用hideBottomUIMenu()会存在问题。还有一点需要注意,那就是如果设置了沉浸式状态栏,那么是无法隐藏底部虚拟按键的。

或者在xml文件里设置了

android:clipToPadding="true"android:fitsSystemWindows="true"

也是无法隐藏底部虚拟按键的。

android 隐藏手机底部虚拟按键就讲完了。

就这么简单。



本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。