华为的华为虚拟键盘高度好用吗

基于界面适配华为手机的虚拟按键的解决方法
转载 & & 作者:wzhseu
下面小编就为大家分享一篇基于界面适配华为手机的虚拟按键的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在项目中,测试发现在一些华为手机的屏幕适配上出现了问题,主要是因为华为Mate等一些系列的手机有一个虚拟按键的设计。当这些虚拟按键由用户手势滑出,或默认显示的话,就会遮挡我们本身的应用布局。比如欢迎界面过后是四个Fragment,那么底部的四个tab就会被虚拟的导航栏遮住,非常难看。
当然,欢迎页的图片适配也同样会出现问题。
Google后得出第一个问题的解决方案。第二个图片的问题则用自己摸索的方式解决,当然也非常简单。
二、布局由于虚拟按键导致导航栏顶上去的解决方法
在我们的项目中加载Fragment的MainActivity,以及其他一般的Activity继承的BaseActivity中的onCreate方法中添加如下代码:
if (AndroidWorkaround.checkDeviceHasNavigationBar(this)) {
AndroidWorkaround.assistActivity(findViewById(android.R.id.content));
其中AndroidWorkaround使我们为了解决该问题而封装的类,也可以看作是一个特定的工具类:
* 解决底部屏幕按键适配
* Created by Mercury on .
public class AndroidWorkaround {
public static void assistActivity(View content) {
new AndroidWorkaround(content);
private View mChildOfC
private int usableHeightP
private ViewGroup.LayoutParams frameLayoutP
private AndroidWorkaround(View content) {
mChildOfContent =
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
frameLayoutParams = mChildOfContent.getLayoutParams();
private void possiblyResizeChildOfContent() {
int usableHeightNow = computeUsableHeight();
if (usableHeightNow != usableHeightPrevious) {
frameLayoutParams.height = usableHeightN
mChildOfContent.requestLayout();
usableHeightPrevious = usableHeightN
private int computeUsableHeight() {
Rect r = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(r);
return (r.bottom);
public static boolean checkDeviceHasNavigationBar(Context context) {
boolean hasNavigationBar =
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id & 0) {
hasNavigationBar = rs.getBoolean(id);
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
hasNavigationBar =
} else if ("0".equals(navBarOverride)) {
hasNavigationBar =
} catch (Exception e) {
return hasNavigationB
重新测试,发现无论是否弹出虚拟按键,都不会再次遮挡tab按钮。
上面的代码需要在setContentView后面执行。其最初的解决方案是stackoverflow上有人为了适配软键盘在全屏下的布局问题。
开始先判断该设备上是否存在导航栏。为什么用findViewById(android.R.id.content)呢?因为android.R.id.content这个id代表的就是所在页面的根布局,而并不需要特别指定一个id给该布局。可以通过调用系统API返回的结果,也可以通过判断该手机是否为华为手机,操作系统属于哪种类型来来判断。
一旦确定该设备存在导航栏,将对该布局进行重新测量。首先mChildOfContent得到其视图树,对全局高度实现监听。
OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,这是一个注册监听视图树的观察者(observer),在视图树的全局事件改变时得到通知。ViewTreeObserver不能直接实例化,而是通过getViewTreeObserver()获得。
接着得到视图目前可用的总高度,将其赋值给mChildOfContent的布局高度。调用requestLayout,让mChildOfContent要求自己的parent view对自己重新设置位置。
四、全屏图片的适配
解决了布局的问题,再来看欢迎页启动时候全屏图片的适配问题。发现该方法对于图片不适用。如下图,当虚拟按键弹出时,图片照样被遮挡了底部的一小部分。
如果隐藏虚拟按键,图片大小恢复正常
仔细想想,对于一个ImageView直接占据一个layout的情况,是没有必要再去写一些代码进行适配的。到布局里一看,发现ImageView的属性 android:scaleType=”centerCrop”
将其改为 android:scaleType=”fitXY”就可以解决了。这样图片可能高度会随着虚拟键的弹出而压缩,但是很好的适配了布局高度的变化而不会被遮挡。
关于scaleType的详细介绍,留待其他文章里再探讨。
以上这篇基于界面适配华为手机的虚拟按键的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具后使用快捷导航没有帐号?
其他登录方式
—— 新手入门 ——
—— 智友精华 ——
查看: 44169|回复: 9
在线时间0 小时最后登录阅读权限10UID注册时间积分6精华0
, 积分 6, 距离下一级还需 14 积分
主题帖子 金币11 元 智豆0 点
17:22 上传
安卓手机虚拟键“返回、主页和多任务”,这三大按键跟随大家风风雨雨这些年,被大家敬称为“安卓三大金刚键”!
抛开那江湖绰号不谈,乍一看他们的名称便可辨别这三大按键分别对应的是“返回上一级操作”、“返回系统桌面”和“打开多任务管理”三项功能!这也是安卓必备的三项功能,更是大家使用最频繁的三项功能!
17:24 上传
看到这里你可能看的正酣,不过楼主必须打断一下!因为以上只是咱们这个故事开始的背景介绍,下面楼主要给大家唠嗑的才是我们今天要说的正题!
大家都知道EMUI也是一直关照着“三大金刚键”不离不弃。不过EMUI在“三大金刚键”本来的功能之上变加了更多的功能,让“三大金刚键”更加的实用便捷,尤其是到了EMUI4.0上,真的是不得不提的姿势点!
Mate8 虚 拟 键 附 加 功 能 大 起 底 之 No.1
虽然人家被唤作“虚”拟键,但是人家的心实际上是很实诚的。一些功能好用的很,完全不是弄虚作假。
大家都知道Mate8在智能手机里算是一个“大块头”了,所以单手模式是少不了的使用技能。但是如何实现单手操作呢?这就要靠Mate8的虚拟键来实现了!不信看下面!
首先我们要去设置里开启单手操作功能。“设置——智能辅助——单手操作——小屏模式”打开对应的开关,然后回到桌面。
17:29 上传
在虚拟键区域左右滑动即可进入单手模式,左滑偏左,右滑偏右。取消向相反方向滑动即可。
17:31 上传
小屏模式,方便单手操作的界面,对于楼主这样手小的机油来说绝对是个福利。虚拟键的这个附加功能三星推荐,手小的机油请务必打开。
Mate8 虚 拟 键 附 加 功 能 大 起 底 之 No.2
接下来这个可能有点鸡肋了,大家就当是楼主为了凑篇幅吧!毕竟,向楼主这么学识渊博的人,总不能才写到第二点就掀了老底了吧!凑个字数,余下的内容放在第三点说吧!
据说“三大金刚”诞生之初,不同的人群间便有了争执。大家关于返回键应该放左边还是放右边一直达不成统一。如果你也不习惯默认的返回键在左边的设定,那么看看这个设置吧!
打开设置界面,依次进入到“设置——智能辅助——导航栏”。
17:33 上传
系统为大家提供了四种导航栏放置方案,甚至还添加了“下拉通知栏”和“隐藏导航栏”的功能选项。只能用贴心来形容了!
Mate8 虚 拟 键 附 加 功 能 大 起 底 之 No.3
多任务按键除了点击进入多任务管理界面这个功能外,大家还可以尝试长按多任务按键的效果,当然了,我想不管是本来就知道,还是不小心误操作,很多人可能早就知道了“长按多任务按键可以进入分屏模式”
17:35 上传
警告:千万别尝试长按返回键和主页键,因为这并没有什么作用╮(╯▽╰)╭
毕竟并不是每一个虚拟键都叫“多任务键”
虚拟键的功能仅仅是这些吗?反正楼主目前只知道这些。不过瘾的机油可以自己折腾折腾,兴许也能发现点什么大家交流交流也是极好的哦~~~
{:204:}{:204:}
在线时间299 小时最后登录阅读权限20UID8271注册时间积分498精华0
, 积分 498, 距离下一级还需 202 积分
主题帖子 金币1002 元 智豆32 点
如果装个什么手势软件,那这4个虚拟键就能有8个功能了
在线时间273 小时最后登录阅读权限20UID4554407注册时间积分512精华0
, 积分 512, 距离下一级还需 188 积分
主题帖子 金币411 元 智豆0 点
长按主页键不是语音助手吗?
在线时间368 小时最后登录阅读权限20UID67987注册时间积分656精华0
, 积分 656, 距离下一级还需 44 积分
主题帖子 金币875 元 智豆41 点
虚拟键都几好用
在线时间1 小时最后登录阅读权限10UID注册时间积分2精华0
, 积分 2, 距离下一级还需 3 积分
主题帖子 金币15 元 智豆0 点
长按主页键不是语音助手吗
在线时间1083 小时最后登录阅读权限1UID注册时间积分3369精华0
头像被屏蔽
主题帖子 金币2297 元 智豆5 点
提示: 作者被禁止或删除 内容自动屏蔽
在线时间5 小时最后登录阅读权限10UID注册时间积分23精华0
, 积分 23, 距离下一级还需 27 积分
主题帖子 金币65 元 智豆28 点
新手上路学习下,谢谢!
AMAZFIT华米智能运动手表2代 0元拍卖华为的虚拟键常被吐槽为什么还一直保留
不少喜欢华为手机的消费者在华为荣耀6后就很少再买华为手机了,并不是因为华为手机不好看不好用,这是一个非常头疼的问题,因为华为手机的虚拟键弄的很多人用着很不习惯,明明一步就能搞定的事情,非得把虚拟按键调出来才能触控,真的很不爽。
另外一部分消费者对华为虚拟键持中立的态度,一方面他们觉得华为的虚拟键挺好用,特别是在玩游戏的时候,虚拟键一隐藏,避免了无意中触碰的尴尬。但是这部分人也比较讨厌的是,好好的一块屏幕被他占用那么一溜子,在你的屏幕中突然出现一块丑的要命的霸占你的屏幕的东西,不忍直视啊
其实大家应该也有注意到,华为本身对于虚拟键也不是非常强硬,也就是一种过渡的解决方案,苹果推出了小圆点,华为不想模仿,便推出下巴的虚拟键,而华为用了虚拟按键的方案之后,并不能做到像IOS系统上面的那么流畅,反而让虚拟按键白白的占用了手机本来就不算大的屏幕,使得手机在使用一定时间后虚拟按键的响应速度越来越慢。
小林猜想,虚拟键应该是现阶段华为手机中端机的过渡方案,廉价的机型采用虚拟按键,而高端的华为品牌和荣耀品牌的旗舰P系列、mate 9Pro 和magic 都开始采用实体按键。
话说各位对华为的虚拟按键有什么看法呢?
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
抢100元大额优惠券,无门槛,领券必减!
淘宝天猫无门槛优惠券精选
今日搜狐热点华为Mate&10全面屏真机现身!这下三大虚拟按键没人喷了吧
作为全球第三国内第一的手机厂商,华为近些年在旗舰机设计上有很多令人诟病的地方,比如屏幕大黑边、后置指纹和三大虚拟按键,而在华为目前最新的旗舰机P10上面,这些被人诟病的功能已经彻底消失不见,华为正在一步步跟随用户需要的设计主流。
<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="https://wx2.sinaimg.cn/large/783df997gy1fjb9pxchunj20h50p30vc.jpg"
ALT="华为Mate&10全面屏真机现身!这下三大虚拟按键没人喷了吧"
TITLE="华为Mate&10全面屏真机现身!这下三大虚拟按键没人喷了吧" />
目前手机设计已经开始进入全面屏时代,而因为全面屏高屏占比的优势,意味着后置指纹和虚拟按键又将重新回归,近日有网友曝光了华为Mate
10的手机正面玻璃盖板,证实了华为也要推出全面屏手机的消息,而从底部的华为logo来看,指纹看来又要回归背后了。
<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="https://wx2.sinaimg.cn/large/783df997gy1fjb9q5dd77j20k00qn0wj.jpg"
ALT="华为Mate&10全面屏真机现身!这下三大虚拟按键没人喷了吧"
TITLE="华为Mate&10全面屏真机现身!这下三大虚拟按键没人喷了吧" />
&#8203;↑ 今天,数码博主@资讯100秒 送上了华为Mate 10的真机照,从给出的系统界面来看,华为Mate
10不仅重回后置指纹,曾经被人诟病的三大虚拟按键也回归了。
<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="https://wx4.sinaimg.cn/large/783df997gy1fjb9rgz2qkj20k50d7mxp.jpg"
ALT="华为Mate&10全面屏真机现身!这下三大虚拟按键没人喷了吧"
TITLE="华为Mate&10全面屏真机现身!这下三大虚拟按键没人喷了吧" />
&#8203;最后:华为曾经的虚拟按键被吐槽除了因背后指纹,更多的则是这虚拟键占用了一部分的屏幕,导致本来屏占比就不高的手机又损失了一些。而现在全面屏的到来,相信再也没人会吐槽了,指纹本来就放不下先不说,虚拟键占用的屏幕在屏占比很高的全面屏面前直接可以忽略,再说了看电视玩游戏也能隐藏。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。华为手机如何更改虚拟按键
2.华为手机都支持主题修改,一般华为主题都是*.hwt格式,我们将下载来的主题文件以zip或者rar压缩文件方式打开。3.打开后将【com.android.systemui】文件提取出来,后缀改为*.zip或者*.rar压缩格式。4.将文件提取出来。5.打开【res—drawable-xhdpi】找到虚拟键图片,替换相关虚拟键图片。6.修改时需要注意,格式和文件像素...
华为Mate8按键音关闭方法。每当我们拨打号码输入数字的时候,总能听到滴滴滴的声音,相当烦躁,那么我们应该怎么关闭这些声音呢,下面就让小编来教你们华为Mate8按键音关闭教程吧!首先我们先打开【设置】,然后找到【声音】打开后再把【拨号键盘触摸音效】那栏右边的椭圆往左拉关闭即可。(如下图)
方法一:不使用第三方软件 1、手机系统最好是开发版,稳定版必须先root,可以自己root(另找教程),也可以刷成开发版。...6、重启手机,屏幕下方就会出现虚拟按键,跟触屏键功能一样。到此就可以使用了~方法二:使用按键软件 这个办法也是需要先ROOT,然后下载按键救星软件或是虚拟按键软件来替代实体功能键。
请认真阅读APP说明,然后点击OK即可,(注:在未购买会员的情况下该软件自带广告,首次使用设置建议先关闭WIFI或数据网络)软件首页的右上角有两个开关,分别是虚拟按键开关与常驻通知开关,开启虚拟按键后,我们会发现R7PLUS底部的三个功能键不见了,而是出现了一条红线,此时在红线上【上滑】即可呼出底栏功能键。...
使用虚拟键盘的时候,加入按键音可以知道按键已经按下。开启按键音之后,在某些场合不方便,这个时候就需要关闭按键音了。有些使用苹果设备的朋友问,不知道该怎么设置或关闭搜狗输入法的按键音,那么下面安下小编就给大家带来详细的介绍,苹果iOS搜狗输入法按键音打开及关闭方法。苹果iOS搜狗输入法按键音打开及关闭方法 ...
百度输入法手机版怎么设置全键盘:1、选择【拼音】 然后你会发现【拼音】旁边有个小三角,这时你再点击一下【拼音】。2、就会弹出下面的界面,然后找到【拼音-全键】。当然,你也可以在这里切换到 【手写】、【五笔】、【笔画】等等。3、之后就切换到全键盘输入了,英文的也是一样的方法。关于百度输入法手机版怎么设置全...
启动服务模式,可以测试手机部分设置及更改设定 WLAN、GPS 及蓝牙*#*#232339#*#*或*#*#526#*#*或*#*#528#*#* WLAN 测试*#*#232338#*#*显示 WiFi MAC 地址*##进入GPS工程模式*#*#1472365#*#* GPS 测试*#*#1575#*#*其它 GPS 测试*#*#232331#*#*蓝牙测试*#232337#或*#*#232337#*#* 显示蓝牙装置地址*#*#8255#*#*启动...
为了最大程度减少按键的使用,我们还可以设置在手机黑屏状态下,点亮屏幕时再也不用使用手机侧边栏按钮。我们在手机主菜单栏中选择【设置】中的【手势体感】选项。然后在【黑屏手势】中将【双击亮屏】设置为打开,在打开状态下它是显示绿色的。这样我们即可在熄屏状态下双击屏幕将屏幕唤醒了。三、快速抓拍 1、打开“相机”...
在解决上个问题的时候发现部分朋友是出现的笔记本电脑按键失灵情况是按键下去没任何反应。或者按键之后,出现的字母或者数字不对应。按键无反应或者按键不规律的显示解决办法:检查键盘:看看是否有几个或者多个按钮,按下之后没有弹起。绝招:更新键盘驱动。在我的电脑 (win7用户就是计算机)右键属性,鼠标单击 键盘,默认...
最后发现讯飞输入pad版使用体验很好,反应速度快,最近发现新版的手机版本也支持虚拟键盘自动隐藏。这套配置是两年前开始用的,平板是昂达vi30双核版,处理器aml8726,双核,1.5g主频,1g ram,打字运行流畅,QQ聊天,上论坛用这套配置完全够用,无需开电脑。当时发现很多带usb接收头的无线键鼠不支持平板,而这个平板又...

我要回帖

更多关于 html华为虚拟键盘适配 的文章

 

随机推荐