您好,欢迎来到知库网。
搜索
您的当前位置:首页Android View---正确获取大小的姿势

Android View---正确获取大小的姿势

来源:知库网

001 Activity/View#onWindowFocusChanged

 @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if(hasFocus){
            int width = needSizeView.getWidth();
            int height = needSizeView.getHeight();
        }
    }

002 view.post(runnable)

 @Override
    protected void onStart() {
        super.onStart();
        view.post(new Runnable() {
            @Override
            public void run() {
                int width = needSizeView.getWidth();
                int height = needSizeView.getHeight();
            }
        });
    }

003 ViewTreeObserver

 @Override
    protected void onStart() {
        super.onStart();
        ViewTreeObserver viewTreeObserver = needSizeView.getViewTreeObserver();
        viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                    view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    int width = needSizeView.getWidth();
                    int height = needSizeView.getHeight();
            }
        });
    }

004 view.measure(int widthMeasureSpec,int heightMeasureSpec)

正确使用的两种方式:

  1. 具体的数值 dp/px
int widthMeasureSpec = MeasureSpec.makeMeasure(100,MeasureSpec.EXACTLY);
int heightMeasureSpec = MeasureSpec.makeMeasure(100,MeasureSpec.EXACTLY);
needSizeView.measure(widthMeasureSpec,heightMeasureSpec);
  1. wrap_content
int widthMeasureSpec = MeasureSpec.makeMeasure((1<<30)-1,MeasureSpec.AT_MOST);
int heightMeasureSpec = MeasureSpec.makeMeasure((1<<30)-1,MeasureSpec.AT_MOST);
needSizeView.measure(widthMeasureSpec,heightMeasureSpec);

Copyright © 2019- zicool.com 版权所有 湘ICP备2023022495号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务