Get height and width of a layout programmatically

前端 未结 16 1456
别那么骄傲
别那么骄傲 2020-11-27 13:55

I have designed an layout in which LinearLayout has 2 children LinearLayout and FrameLayout and in each child I put different views.

16条回答
  •  孤独总比滥情好
    2020-11-27 14:37

    Most easiest way is to use ViewTreeObserver, if you directly use .height or .width you get values as 0, due to views are not have size until they draw on our screen. Following example will show how to use ViewTreeObserver

    ViewTreeObserver viewTreeObserver = YOUR_VIEW_TO_MEASURE.getViewTreeObserver();
            if (viewTreeObserver.isAlive()) {
                viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
    
                        YOUR_VIEW_TO_MEASURE.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                        int viewHeight = YOUR_VIEW_TO_MEASURE.getHeight();
                        int viewWeight = YOUR_VIEW_TO_MEASURE.getWidth();
    
                    }
                });
            }
    

    if you need to use this on method, use like this and to save the values you can use globle variables.

提交回复
热议问题