2014-09-24 67 views
0

我试图获取TextView的位图表示。我试图同时使用setDrawingCacheEnabled方法和View.draw(canvas)方法,在这两种情况下我都没有看到任何错误,但我也没有得到任何实际的绘图。这是我的View.draw(canvas)方法的代码。有什么明显的我可以忽略。我觉得我完全按照规定来做这件事。我将结果保存到SD卡上的位图文件中,它只是一个没有任何文本的黑色矩形。TextView未绘制到画布中

我能想到的唯一的事情就是这是一个没有附加到任何父级的TextView。这是否有问题?

Constants.setCViewAndRenderFonts(Main.this, R.layout.preview_whiteboard); 
     Bitmap b = Bitmap.createBitmap(1280, 720, Config.ARGB_8888); 
     Canvas cs = new Canvas(b); 

     TextView tv = new TextView(Main.this); 
     //tv.setDrawingCacheEnabled(true); 
     LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
     tv.setLayoutParams(lp); 

     //tv.setTypeface(Constants.getTypeFace("bold", Main.this)); 
     tv.setTextSize(68); 
     //tv.setRotation(-4.0f); 
     try{ 
      String userComment = "Eenie Meanie Miney Moe, Catch a Tiger by its toe (do Tigers have toes??"; 
      tv.setText(userComment); 
     }catch(Exception e){ 
      L.e("can't get quote " + e); 
     } 
     tv.setTextColor(0xFFAAAAAA); 
     //tv.buildDrawingCache(); 
     //Bitmap b = tv.getDrawingCache(); 
     tv.draw(cs); 

     ((ImageView)findViewById(R.id.preview)).setBackground(BPCBitmapFactory.getDrawableFromBitmap(Main.this, b)); 
     myApp.resetUser().saveUserBitmap(b); 

回答

0

我的解决方案竟然是扩展TextView并执行所有绘图onMeasure。我怀疑,直到onMeasure被称为没有*绘制。