Screen Size Honeycomb Menu android

2019-02-25 01:32发布

Hi I am trying yo get the screen size of screen minus the menu bar at the bottom.

I know I could just subtract a constant number according to the resolution of the device but it is a super ugly hack. I am sure google people are not dumb enough to forget to give the user a function to get the height of the bottom menu bar so I can subtract it from the full screen size

This is a similar post. Size of android notification bar and title bar?

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

what_i_need =metrics.heightPixels-buttomMenuHeight();

I need buttomMenuHeight();

i could not find it in the API. I don't really care about the backward comparability at this point

Thanks

3条回答
老娘就宠你
2楼-- · 2019-02-25 01:56

Try calling getHeight() after onLayout. The view is not sized on inflate.

EDIT: Or since Activity does not have onLayout you might wait for onSizeChanged.

(Reference How to know when activity is laid out?)

查看更多
我命由我不由天
3楼-- · 2019-02-25 02:08

I am drawing image in native code and I need to pass the size of the screen to C.

I tried to get the Height by getHeight() of the view but that returns 0 always even after setContentView is called.

RelativeLayout masterLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
masterLayout.setLayoutParams(params);
setContentView(masterLayout);

when I try masterLayout.getHeight(), it returns 0. I expected to get the full screen height as I said fill_parent.

查看更多
我欲成王,谁敢阻挡
4楼-- · 2019-02-25 02:16

Why not use the height of the activity's top-level View? e.g. if your activity contains a full-height LinearLayout, use its height, so you don't have to know the menu height, or noticiation bar height.

I think you're treading a dangerous road doing this kind of calculation, as you don't know what the future layouts for Android might be, or how they might differ on Google TV, or whatever.

查看更多
登录 后发表回答