android View 的getWidth(),getHeight总是0请问怎么解决哦?View cv = context.getWindow().getDecorView();          
bmp = Bitmap.createBitmap(cv.getWidth(), cv.getHeight(),Bitmap.Config.ARGB_8888);发现cv.getWidth(), cv.getHeight()的值都是0,导致异常,请教如何解决哦

解决方案 »

  1.   

    用getMeasuredHeight()和getMeasuredWidth()
    View cv = context.getWindow().getDecorView();          
    bmp = Bitmap.createBitmap(cv.getMeasuredWidth(), cv.getMeasuredHeight(),Bitmap.Config.ARGB_8888);
      

  2.   


    //------------------------------------------------方法一  
            int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);  
            int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);  
            imageView.measure(w, h);  
            int height =imageView.getMeasuredHeight();  
            int width =imageView.getMeasuredWidth();  
            textView.append("\n"+height+","+width);  
              
              
              
      
            //-----------------------------------------------方法二  
            ViewTreeObserver vto = imageView.getViewTreeObserver();  
            vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {  
                public boolean onPreDraw() {  
                    int height = imageView.getMeasuredHeight();  
                    int width = imageView.getMeasuredWidth();  
                    textView.append("\n"+height+","+width);  
                    return true;  
                }  
            });  
            //-----------------------------------------------方法三     
            ViewTreeObserver vto2 = imageView.getViewTreeObserver();    
            vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {  
                @Override    
                public void onGlobalLayout() {  
                    imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);    
                    textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth());  
                }    
            });