Android -- 状态栏高度

干货

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.getField("status_bar_height");
    x = Integer.parseInt(field.get(obj).toString());
    sbar = getResources().getDimensionPixelSize(x);
} catch(Exception e1) {
    loge("get status bar height fail");
    e1.printStackTrace();
}

下面代码不要放在onCreate中,否则获取状态栏高度为0

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

int statusBarHeight = frame.top;

我是天王盖地虎的分割线

时间: 05-01

Android -- 状态栏高度的相关文章

Android如何获取系统高度、标题栏和状态栏高度

在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度,标题栏高度等信息.为以后方便,在此做个简单记录. 晒代码前先了解一下android屏幕区域的划分,如下图(该图引用自此文http://www.iteye.com/topic/828830 ) 1. 屏幕区域的获取 [java] view plaincopy activity.getWindowManager().getDefaultDisplay(); 2.应用区域的获取 [java] view plaincopy R

【转】Andorid获取状态栏高度

在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度.状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height.但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件.下边是在Activity中获取的方法 public int getStatusBarHeight() { int resul

获取状态栏高度

Android中获取状态栏高度的两种方法: public static int getStatusHeight(Context context) { int statusHeight = 0; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int resourceId = Integer.parseInt(c

android状态栏总结

针对状态栏的操作,只针对4.4kitKat(含)以上的机型,部分国产rom会失效,目前发现的有华为的EMUI Activity必须是noActionbar主题 本文基于StatusBarUtils略作修改,感谢作者laobie 本文源码地址 相关属性重温 FitsSystemWindows在使用FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS.FLAG_TRANSLUCENT_STATUS挤占了状态栏的高度的时候,我们的布局文件也跟着顶到了状态栏上.通过FitsSystemWi

iOS6 / iOS7 状态栏高度适配

问题原因:iOS7的状态栏(status bar)不再占用单独的20px,所以假设你在iOS6上的界面布局是正常的,那么到了iOS7上就会变成以下这个样子:             左边是iOS6界面布局,右边是iOS7界面布局.这时有人会想着把iOS7界面上控件总体向下移动20px,可是当Interface Builder Document改成Xcode 4.6时又变成了例如以下情况:             界面不会由于你在不同的Interface Builder Document值下设置不

android 获取状态栏高度

public int getStatusBarHeight(Context context) { Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField(&

android 入门-控件 测量状态栏高度

private ViewTreeObserver viewTreeObserver; /** 获取可見区域高度 **/ WindowManager manager = getWindowManager(); window_width = manager.getDefaultDisplay().getWidth(); window_height = manager.getDefaultDisplay().getHeight(); viewTreeObserver = dragImageView.g

android 状态栏(StatusBar)

一.SystemUI 概述 自 android2.2 开始 , 原本存在与 framework-res.apk 中的状态栏和下拉通知栏界面控制被分割出一个单独的 apk 文件 , 命名为 SystemUI.apk, 保存在 System/app 文件夹中.在 SystemUI.apk 中 , 是存在着状态栏的图标 ,XML 和控制文件等 , 这样的分割 , 使我们可以更方便地去修改. SystemUI 模块中主要包含了 USB 和 Statusbar 两个子模块,本文将以 Statusbar 为

Android ListView高度自适应和ScrollView冲突解决

在ScrollView中嵌套使用ListView,ListView只会显示一行到两行的数据.起初我以为是样式的问题,一直在对XML文件的样式进行尝试性设置,但始终得不到想要的效果.后来在网上查了查,ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起了冲突,一般不建议两者套用. 下面说说具体解决方案.方案的主要思路就是根据ListView子项重置其高度. 首先,ListView不能直接用,要自定义一个,然后重写onMeasure()方法: 1 import andro