I've got the problem that I need the height of the android tablet system bar. It's the same problem as over here, but I cant use this answer, because it gives me the same size as from the DisplayMetrics. At both ways I get the resolution with this bar allready calculated in it. (This problem doesnt appear at my smartphone, just on my tablet).
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
// status bar (at the top of the screen on a Nexus device)
public static int getStatusBarHeight(Context context) {
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
return resources.getDimensionPixelSize(resourceId);
}
return 0;
}
// navigation bar (at the bottom of the screen on a Nexus device)
public static int getNavigationBarHeight(Context context) {
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
return resources.getDimensionPixelSize(resourceId);
}
return 0;
}
回答2:
Check out this answer here: https://stackoverflow.com/a/8367739/807499
It gives the full height of the screen. You can then minus the size given by DisplayMetrics or by your root layout's size.
回答3:
Chris Banes mentioned this in a recent Droidcon talk. The whole talk is super relevant, but here's a link to the part that answers your question (for all form factors, including tablet).
https://youtu.be/_mGDMVRO3iE?t=1093
This is the correct way to get status bar and navigation bar sizes: setOnApplyWindowListener
I hope this helps!