2014-09-24 70 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被稱爲沒有*繪製。