有没有办法获得android中通知栏和标题栏的大小?目前我获得了显示宽度和高度:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Run Code Online (Sandbox Code Playgroud)
之后,我想减去条形的大小,这样我就可以在不丢失宽高比的情况下拉伸视频.目前我隐藏了酒吧,因为我看不到更好的方式.
Don*_*Gru 19
也许这是一种有用的方法:参考图标设计指南,状态(通知)栏只有三种不同的高度,具体取决于屏幕密度:
所以,如果你使用检索设备的屏幕密度densityDpi的DisplayMetrics你知道减去其值
所以看起来像这样:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int myHeight = 0;
switch (metrics.densityDpi) {
case DisplayMetrics.DENSITY_HIGH:
Log.i("display", "high");
myHeight = display.getHeight() - 48;
break;
case DisplayMetrics.DENSITY_MEDIUM:
Log.i("display", "medium/default");
myHeight = display.getHeight() - 32;
break;
case DisplayMetrics.DENSITY_LOW:
Log.i("display", "low");
myHeight = display.getHeight() - 24;
break;
default:
Log.i("display", "Unknown density");
Run Code Online (Sandbox Code Playgroud)
sh0*_*0m1 19
*据我所知,这完美无缺.
public int getStatusBarHeight() {
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}*
Run Code Online (Sandbox Code Playgroud)
cdh*_*ker 18
Martin的回答指出了错误的高度(至少从SDKv11开始).根据图标设计指南,状态栏图标的高度为25dp,而不是32dp.25dp转化为这些密度特定的高度:
观察这些大小的简单方法是对具有正常密度的仿真器或设备使用hierarchyviewer.只需查看getHeight()标题栏的FrameLayout值即可.状态栏有点棘手,因为它是DecorView的一部分而不是视图本身,所以通过查看位于mTop状态栏正下方的标题栏的FrameLayout来间接获得它的高度.根据我的观察,状态栏和标题栏各自匹配状态栏图标的25dp高度(我还没有看到SDKv11中android ref中的这个事实的声明).