Android View.getDrawingCache returns null, only null

后端 未结 10 990
遇见更好的自我
遇见更好的自我 2020-11-22 13:06

Would anyone please try to explain to me why

public void addView(View child) {
  child.setDrawingCacheEnabled(true);
  child.setWillNotCacheDrawing(false);
          


        
10条回答
  •  再見小時候
    2020-11-22 13:41

    I am trying to creating the n number of images dynamically based on view.

    LayoutInflater infalter=(LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final View addview=infalter.inflate(R.layout.barcode_image_list_row_item, null);
    final ImageView imv=(ImageView) addview.findViewById(R.id.imageView1);
    final TextView tv=(TextView) addview.findViewById(R.id.textView1);
    
    try {         
        final Bitmap bitmap = encodeAsBitmap(""+value, BarcodeFormat.CODE_128, 600, 300);
    
        if (bitmap != null) {
            // TODO Auto-generated method stub
            imv.setImageBitmap(bitmap);
            tv.setText(value);
    
            addview.setDrawingCacheEnabled(true);
    
            // this is the important code :)  
            // Without it the view will have a dimension of 0,0 and the bitmap will be null          
            addview.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
            addview.layout(0, 0, addview.getMeasuredWidth(), addview.getMeasuredHeight()); 
    
            addview.buildDrawingCache(true);
            Bitmap b = Bitmap.createBitmap(addview.getDrawingCache());
            addview.setDrawingCacheEnabled(false); // clear drawing cache
            // saving the bitmap   
            savebarcode(b,value);
        }
    } catch (WriterException e) {
        e.printStackTrace();
    }
    

    I think this code will help someone..

提交回复
热议问题