发布网友 发布时间:2022-04-23 05:46
共3个回答
热心网友 时间:2023-10-17 05:02
屏幕高度都是包括了状态栏和导航栏的高度的
2.获取控件尺寸
如果我们在onCreate()方法里直接调用getWidth()、getMeasuredWidth()获得的尺寸为0,这是由于在onCreate()中,我们的控件还没有画好,等onCreate()执行完了,我们的控件才被测量出来,我们可以注册一个*,用来监听测量结果
ViewTreeObserver vto = mButton.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override
public void onGlobalLayout() { //移除上一次监听,避免重复监听
mButton.getViewTreeObserver().removeGlobalOnLayoutListener(this); //在这里调用getHeight()获得控件的高度
buttonHeight = mButton.getHeight();
}
});1234567891011
3.获得状态栏/通知栏的高度
public static 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("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
statusBarHeight = context.getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
} return statusBarHeight;
}12345678910111213141516
4.获得导航栏高度
public int getNavigationBarHeight(Activity activity) {
Resources resources = activity.getResources(); int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android"); //获取NavigationBar的高度
int height = resources.getDimensionPixelSize(resourceId); return height;
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……
热心网友 时间:2023-10-17 05:02
public int getNavigationBarHeight(Activity activity) {热心网友 时间:2023-10-17 05:03
目前安卓上有两种尺寸,分别为56dp和48dp,目前较常用的高度为48dp;来自谷歌官方的规范为56dp。想了解更详细点,请参考谷歌官方说明,以下地址为本问题说明点:https://www.google.com/design/spec/layout/metrics-keylines.html#metrics-keylines-keylines-spacing