Android获取设备状态栏status bar高度的正确姿势
16lz
2021-01-23
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,请小心选择使用。
更多相关文章
- 【Android】安卓中常用的图片加载方法
- android 申请移动应用的签名生成方法
- Android SDK下载和更新失败的解决方法!!!
- Android studioError:(13, 0) Gradle DSL method not found: 'an
- android字体加粗的方法
- android中各种图标尺寸以及多分辨率支持方法
- android 7.0 系统关闭彩信过CTA测试的方法