获取window状态栏和标题栏的高度

1.获取状态栏高度:

decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。

于是,我们就可以算出状态栏的高度了。

[java] view plaincopy

  1. Rect frame = new Rect();
  2. getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
  3. int statusBarHeight = frame.top;

2.获取标题栏高度:

getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法可以获取到view不包括标题栏的部分,然后就可以知道标题栏的高度了。

[java] view plaincopy

  1. int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
  2. //statusBarHeight是上面所求的状态栏的高度
  3. int titleBarHeight = contentTop - statusBarHeight; (statusBarHeight见上)

关于上面的一点补充,由于窗口view的绘制需要一定的时延,所以在获取状态栏高度的时候在窗口的可视阶段即从oncreate()->onresume()都不能直接使用上面的方法。解决方法有3种:
1.可以放在一个button的OnClickListener下的onClick()方法里面;
2.当然你也可以在onPause()->onDestroy()里面去获取
3.用一个handler。试验代码如下:
在onCreate()方法里面执行:
mHandler.postDelayed(r, 200);

[java] view plaincopy

  1. Runnable r = new Runnable() {
  2. @Override
  3. public void run() {
  4. Rect frame = new Rect();
  5. getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
  6. int statusBarHeight = frame.top;
  7. Log.d(TAG, "&&&& " + statusBarHeight);
  8. }
  9. };

最后一点建议是获取该值最好只获取一次,然后存储起来,和屏幕的高宽获取类似,减少对系统资源的重复过多使用。

转自:http://blog.csdn.net/androidzhaoxiaogang/article/details/6825163#

时间: 2024-12-24 17:44:28

获取window状态栏和标题栏的高度的相关文章

Android获取状态栏和标题栏的高度

版权声明:本文为博主原创文章,未经博主允许不得转载. 1.获取状态栏高度: decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏. 于是,我们就可以算出状态栏的高度了. [Java] view plain copy Rect frame = new Rect();getWindow().getDecorView()

获取状态栏、标题栏、屏幕高度

获取屏幕.状态栏.标题栏高度 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { //屏幕宽高--包含状态栏.注意,华为的手机不包含下面的[HOME键那一栏],如1920屏幕只有1794 Point point = new Point(); Display disp = this.getWindowManager()

获取像素密度、屏幕高度、状态栏、标题栏,屏幕截图

演示效果 奇酷1080P 华为1080P 华为720P 屏幕像素参数相关信息表格    像素密度  每英寸像素数  分辨率      分辨率别称      默认图标大小 xxhdpi   3        480   1080*1920   1080P    144*144   重点关注 xhdpi    2        320    720*1280     720P      96*96      适配基准 hdpi     1.5      240    480*800      WVG

Android获取状态栏、标题栏、ActionBar以及屏幕的高度

一.屏幕高度和宽度获取方法 int screenWidth,screenHeight; WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); screenWidth = display.getWidth(); screenHeight = display.getHeight(); 另外一种 DisplayMetrics dm = new Disp

C# winform 获取标题栏,状态栏,菜单栏的高度

MessageBox.Show("当前窗体标题栏高度"+(this.Height - this.ClientRectangle.Height).ToString());//获得当前窗体标题栏高度 ClientRectangle//获取表示控件的工作区的矩形 MessageBox.Show(SystemInformation.PrimaryMonitorSize.ToString()); //获取主显示器屏幕的尺寸(像素) //获取主显示器当前当前视频模式的尺寸(以象素为单位) Mess

获取Android状态栏高度的屡试不爽的方法

如下代码所示: [java] view plaincopy private int getStatusBarHeight() { Class<?> c = null; Object obj = null; Field field = null; int x = 0, sbar = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getFi

android中影藏状态栏和标题栏的几种方法

1,在android中,有时候我们想隐藏我们的状态栏和标题栏(如:第一次安装app时候的欢迎界面),实现这些效果有几种方法,随便选取自己喜欢的即可. 2, A:利用代码实现,在我们主Activity中在onCreate()方法中加入 1 //获取当前窗体 2 final Window window = getWindow(); 3 //隐藏状态栏 4 window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager

JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度

alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(document.body).height());//浏览器时下窗口文档body的高度 alert($(document.body).outerHeight(true));//浏览器时下窗口文档body的总高度 包括border padding margin alert($(window).width());

JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度

网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线的宽) 网页可见区域高:document.body.offsetHeight (包括边线的宽) 网页正文全文宽:document.body.scrollWidth 网页正文全文高:document.body.scrollHeight 网页被卷去的高:document.body.scr