9
根據主題「將TextView截屏到位圖」中找到許多帖子。如何將TextView繪製到位圖中(無需在顯示屏上繪製)
好吧,與我的問題不同的是,首先在顯示器上繪製視圖(所有佈局和測量工作已完成),然後繪製到連接到位圖的Canvas中。
我只是想從頭開始創建一個TextView,而不會顯示在呈現爲位圖的顯示器上。
這一個是已經在工作的基礎配置。點擊TextView將自己繪製成一個位圖並將其設置爲一個ImageView。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:background="#fff">
<TextView android:id="@+id/tv" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="The Quick Brown Fox Jumps Over The Lazy Dog."
android:textSize="20dip" android:background="#abcdef"
android:textColor="#000" android:padding="10dip"
android:layout_margin="10dip" />
<ImageView android:id="@+id/iv" android:layout_width="449px"
android:layout_height="47px" android:background="#56789a"
android:layout_margin="10dip" />
</LinearLayout>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.tv).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bmp = Bitmap.createBitmap(449, 47, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
v.draw(canvas);
ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(bmp);
}
});
}
現在出現問題的部分。我將在Java中創建一個TextView,並且我希望這個被直接繪製成一個Bitmap。在此之後,我將把它設置爲ImageView。我從來沒有得到這個運行:(
Bitmap bmp = Bitmap.createBitmap(449, 47, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
TextView tv = new TextView(this);
tv.setText("THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG");
tv.setTextSize(55f);
tv.setTextColor(this.getResources().getColor(android.R.color.black));
tv.draw(canvas);
ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(bmp);
這並不既不的onCreate也不在一個OnClickListener工作。與setDrawingCacheEnabled(),測量()和requestLayout()進行實驗也不能工作。
幫了我很多。 –