Android获取设备状态栏status bar高度的正确姿势
程序员文章站
2024-02-01 12:02:34
android获取设备状态栏高度的正确姿势
正确代码方式:
int height = 0;
int resourceid = getapplicationcon...
android获取设备状态栏高度的正确姿势
正确代码方式:
int height = 0; int resourceid = getapplicationcontext().getresources().getidentifier("status_bar_height", "dimen", "android"); if (resourceid > 0) { height = getapplicationcontext().getresources().getdimensionpixelsize(resourceid); }
所得height即为设备屏幕状态栏高度,单位pix。该方法可以在oncreate里面直接使用,与view的初始化先后顺序无关,此方法稳定可靠,推荐使用上面的代码获取设备状态栏高度。
其他一些方法如果直接先于view初始化完成前计算高度,可能会获得的高度值为0,取不到正确的状态栏高度值。比如,下面这个方法是网上流传很广的方法,虽然在某些时候可以获取,但是在有些时候获取的状态栏高度为0:
rect rectangle = new rect(); window window = getwindow(); window.getdecorview().getwindowvisibledisplayframe(rectangle); int statusbarheight = rectangle.top; int contentviewtop = window.findviewbyid(window.id_android_content).gettop(); int titlebarheight = contentviewtop - statusbarheight;
这个方法获取状态栏高度值,不可靠,若oncreate里面的view未初始化加载完成,取出来的状态栏高度值为0,请小心选择使用。