一种巧妙获取Android状态栏高度的办法_getresources().getidentifier("status_bar_height-程序员宅基地

技术标签: android  Android  

这是在我研究相对布局和绝对布局的时候顺带发现的。



我们都知道,普通的Android界面如图所示,从上到下依次是statusbar,actionbar,内容,虚拟按键。要获取状态栏高度,一种比较常规的做法是:

    private int getStatusBarHeight(Context context) {
        int result = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = context.getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

这样可以获取到状态栏的高度。

下面介绍一种有趣却又行之有效的方法。

1、新建一个Activity,什么都不用加。



2、设置根布局的id,我这里设置的root。

    private int getStatusBarHeight() {
        int loc[] = new int[2];
        mRoot.getLocationOnScreen(loc);
        if (getActionBar() != null) {
            return loc[1] - getActionBar().getHeight();
        } else if (getSupportActionBar() != null) {
            return loc[1] - getSupportActionBar().getHeight();
        }
        return 0;
    }


道理很简单,首先获取根布局相对于屏幕的y坐标,然后减去actionbar的高度,即是statusbar的高度了。

不过要注意的一点是,这个方法需要在onWindowFocusChanged之后调用,否则视图尚未加载完毕,得到的结果是0。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zengsidou/article/details/78464128

智能推荐

Java零基础学习-----JAVA核心类库(上)(三)-程序员宅基地

文章浏览阅读97次。正则表达式正则表达式概念:正则表达式本质就是一个“规则字符串”,可以用于对字符串数据的格式进行验证,以及匹配、查 找、替换等操作。该字符串通常使用^运算符作为开头标志,使用$运算符作为结尾标志,当然也可以省 略。正则表达式规则:正则表达式规则:可变字符串类可变字符串类的基本概念1.由于String类描述的字符串内容是个常量不可改变,当需要在java代码中描述大量类似的字符串是,只能单独申请和存储,此时会造成内存空间的浪...

植物大战僵尸Windows 10不能正常运行的解决方案_win10植物大战僵尸出错-程序员宅基地

文章浏览阅读1.4w次,点赞6次,收藏9次。植物大战僵尸在Windows10不能正常运行的解决方案现象启动后闪退并报Fatal Error解决方案注册表 HKEY_CURRENT_USER\Software\PopCap\PlantsVsZombies 中的 ScreenMode 项改为 0即默认使用窗口模式运行该程序产生原因植物大战僵尸不支持在Windows 10上全屏,而它默认又是全屏运行,这样就没有办法在游戏内调整为窗口..._win10植物大战僵尸出错

Dell R410 BIOS 升级方法_戴尔r410服务器如何升级bios-程序员宅基地

文章浏览阅读2.5k次。需求背景Dell R410 应该是不少二手服务器的热门选择之一。这款服务器虽然便宜,但也是因为年代久远,网上并没有很多资料(更可能的原因是因为这些服务器原来都是企业购买,本来带有技术支持的),所以如何给服务器进行BIOS固件升级似乎成了一个难题。以下是以Dell R410为例,对服务器进行BIOS升级的介绍。BIOS 固件下载首先,可以在Dell官网支持中找到R410页面的相关下载。然后我们操作系统选择BIOS,即可在下拉列表中找到BIOS的固件,当前最新的版本是1.14.0。另外,也可以在http_戴尔r410服务器如何升级bios

Android Gradle新增buildtypes_android studio的gradle中追加不同的build-程序员宅基地

文章浏览阅读703次。添加自定义buildType,比如预发版、beta版,正式版这样的需求在buidtypes里面增加 buildTypes { release { } debug { } pre { } }重点1:..._android studio的gradle中追加不同的build

网格细分算法(Catmull-Clark subdivision & Loop subdivision)附源码_网格细分代码-程序员宅基地

文章浏览阅读2w次,点赞14次,收藏49次。转载自:http://www.cnblogs.com/shushen/p/5251070.html下图描述了细分的基本思想,每次细分都是在每条边上插入一个新的顶点,可以看到随着细分次数的增加,折线逐渐变成一条光滑的曲线。曲面细分需要有几何规则和拓扑规则,几何规则用于计算新顶点的位置,拓扑规则用于确定新顶点的连接关系。下面介绍两种网格细分方法:Catmull-Clark细分和Loop细分_网格细分代码

Mysql搜索引擎总结_一般mysql数据库用甚么搜索引擎-程序员宅基地

文章浏览阅读3.4k次。什么是存储引擎?  关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。 对于MySQL来说,它提供了很多种类型的存_一般mysql数据库用甚么搜索引擎

随便推点

R语言:cbind()和rbind()-程序员宅基地

文章浏览阅读7.6w次,点赞44次,收藏158次。可以利用函数cbind() 和rbind() 把向量和矩阵拼成一个新的矩阵。概略地说,cbind() 把矩阵横向合并成一个大矩阵(列方式),而rbind()是纵向合并(行方式)。cbind: 根据列进行合并,即叠加所有列,m列的矩阵与n列的矩阵cbind()最后变成m+n列,合并前提:cbind(a, b)中矩阵a、b的行数必需相符 rbind: 根据行进行合并,就是行的叠加,..._rbind

pg操作符之补全代码的tab键_pgtab-程序员宅基地

文章浏览阅读780次。强大的tab键比如执行这个postgres-# create ext用tab键敲一下,马上就补全了,变成如下了postgres-# create extension继续tab键敲两下,就出现如下postgres-# create extensionbloom dblink pg_trgm plpgsql————————————————版权声明:本文为CSDN博主「梁敬彬」的原创文..._pgtab

Hi3518EV300编译U-Boot和内核报错:loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_val...-程序员宅基地

文章浏览阅读1k次。  下载Hi3518EV300的SDK后编译内核和U-boot,发现爆出如下错误:scripts/kconfig/conf --silentoldconfig KconfigAborted (core dumped)Aborted (core dumped)Aborted (core dumped)Aborted (core dumped)Aborted (core ..._loadlocale.c:130: _nl_intern_locale_data: assertion `cnt < (sizeof (_nl_valu

关于GLTF格式的综述、结构与TS解析_gltf数据结构-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏23次。三维格式、GLTF总概、GLTF历史、GLTF基础结构、GLTF基础示例、GLTF结构解析实践。_gltf数据结构

国产arm芯片CH32F103芯片开发下载使用简介-程序员宅基地

文章浏览阅读2.2w次,点赞37次,收藏170次。国产arm芯片厂家越来越多,这里介绍南京沁恒(就是大家熟知的ch340usb转换芯片那家)推出的国产arm芯片CH32F103芯片,对标stm32F103系列芯片,管脚全部兼容,寄存器全部兼容,但增强了USB功能,有2个usb,一个host,一个device,功能更强,成本更低。但flash下载算法和内部BootLoader和st公司的兼容性有差别。为让大家了解,专门开篇介绍开发和下载的过程。1.STlink(SW等仿真工具)下载1.1开发板连接STlink如下图所示,接法完全如同st芯片。某宝有售_ch32f103

[教程] 手把手教你如何安装Google Play框架服务不闪退_google play 框架 安装 使用-程序员宅基地

文章浏览阅读7.9w次,点赞12次,收藏101次。转自《ZOL平板电脑论坛》,作者:脑袋不会坏 题目:《Google Play闪退报错各种问题解决以及Google框架服务的安装方法 》。网址:http://padbbs.zol.com.cn/1/197_246.html。感谢原文作者“脑袋不会坏”。太详细了,给小白的 准确 刷机教程。手把手教你。首先说说为什么教唆大家安装Google的各种框架服务还有Goo_google play 框架 安装 使用