Android中状态栏的高度是多少?总是一样吗?
从我的测量来看,它似乎是25dp,但我不确定它是否在所有平台上都有相同的高度。
(我想知道这正确地实现一个淡出过渡从一个没有状态栏的活动到一个这样做)
Android中状态栏的高度是多少?总是一样吗?
从我的测量来看,它似乎是25dp,但我不确定它是否在所有平台上都有相同的高度。
(我想知道这正确地实现一个淡出过渡从一个没有状态栏的活动到一个这样做)
当前回答
根据材料指南;状态栏高度为24dp。
如果你想获得状态栏的高度,你可以使用下面的方法:
private static int statusBarHeight(android.content.res.Resources res) {
return (int) (24 * res.getDisplayMetrics().density);
}
可以从activity中调用:
statusBarHeight(getResources());
其他回答
在我用来获取状态栏高度的所有代码示例中,唯一一个在Activity的onCreate方法中实际工作的代码示例是:
public int getStatusBarHeight() {
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}
显然,状态栏的实际高度被保留为Android资源。上面的代码可以添加到ContextWrapper类中(例如,一个Activity)。
网址:http://mrtn.me/blog/2012/03/17/get-the-height-of-the-status-bar-in-android/
默认高度是25dp。在Android Marshmallow (API 23)中,高度降低到24dp。
更新:请注意,自从缺口和打孔的时代开始,使用静态高度的状态栏不再工作。请使用窗口插页代替!
试试这个:
Rect rect = new Rect();
Window win = this.getWindow();
win.getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
int contentViewTop = win.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int titleBarHeight = contentViewTop - statusBarHeight;
Log.d("ID-ANDROID-CONTENT", "titleBarHeight = " + titleBarHeight );
它没有为我工作在onCreate方法的活动,但当我把它放在onClickListener,并给我一个25的测量
在android6.0中,状态栏的高度为24dp
<!-- Height of the status bar -->
<dimen name="status_bar_height">24dp</dimen>
<!-- Height of the bottom navigation / system bar. -->
<dimen name="navigation_bar_height">48dp</dimen>
你可以在源代码中找到答案:frameworks\base\core\res\res\values\ dimensions .xml
如果你知道它的大小和高度
like
例如,在屏幕尺寸为320 X 480的设备中,状态栏高度为25px,对于屏幕尺寸为480 X 800的设备,状态栏高度必须为38px
然后你可以得到视图的宽度/屏幕大小,你可以使用if else语句来获得状态栏的高度