Android-取得输入法或者系统标题栏、魅族下部smartbar等的高度

本文介绍了一种在魅族MX2手机上获取系统标题栏、输入法及Flyme系统Smartbar高度的方法。通过监听布局绘制过程,计算根布局高度与可见区域高度之差,从而准确获取输入法的高度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图,我用的是魅族Mx2,假设我要取得系统标题栏,或者我要根据得用户安装的输入法的高度改变想要的显示效果,又或者我要取得魅族flyme系统smartbar的高度,很多人都不知道怎么获取,今天我给大家分享下一个简单的方法取得它们的高度

效果图


关于怎么取得正确取得高度(避免取得的值为0)的方法在我另一篇blog里有,这里也有

http://blog.youkuaiyun.com/hjhrq1991/article/details/38950819


好,下面我说下代码,代码很少,在oncreated方法里取得,系统会调用一个listener来监听view的绘制,在view绘制完的时候,系统会回调回来通知view绘制,然后这时我们才去取得view的高度。


                // 我的布局内容,最外层的layout
		myLayout = (RelativeLayout) findViewById(R.id.rootview);

		ViewTreeObserver vto = myLayout.getViewTreeObserver();
		vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
			@Override
			public void onGlobalLayout() {

				Rect r = new Rect();
				// 取得这个布局动态的显示区域
				myLayout.getWindowVisibleDisplayFrame(r);

				// 取得这个布局所在根布局的高度,补充些知识点,我们所有的布局都是放在一层根布局里(好像是framelayout),
				// 我们平常的输入法之类的是放在这个根布局里的,所以我们的思路是取得根布局的高度,再减去动态变化的这个RelativeLayout的高度,
				// 得到的就是我们输入法的布局。拓展出去,获取状态栏的高度同理
				int screenHeight = myLayout.getRootView().getHeight();
				int heightDifference = screenHeight - (r.bottom - r.top);
				System.out.println(screenHeight + "-----------"
						+ heightDifference + "-----------");

			}
		});






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值