我以編程方式在Android中生成視圖。父視圖是RelativeLayout
,我將動態添加子視圖(例如,TextView
和ImageView
)。以編程方式生成視圖並捕獲位圖
如果我將視圖添加到我的活動的主視圖,那麼它顯示正常(就像預期的那樣)。使用此代碼。
LinearLayout mainView = (LinearLayout)findViewById(R.id.mainView);
mainView.addView(dynamicallyGeneratedView);
我不想添加視圖作爲子視圖,但我只是想把它變成一個位圖。所以我做了以下幾點:
view.measure(View.MeasureSpec.UNSPECIFIED,View.MeasureSpec.UNSPECIFIED);
Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
view.draw(c);
但是,當我將此位圖添加到ImageView它不顯示任何內容。
我在做什麼錯?我想生成一個視圖,把它變成一個位圖,但是而不是顯示在屏幕上。
任何幫助,將不勝感激。
好,所以有點工作,謝謝(我現在可以看到一個圖像),但不幸的是它沒有在位圖中佈置子視圖,就像直接將視圖添加爲子視圖一樣。有沒有辦法讓視圖認爲它被添加爲活動視圖的子視圖而不實際添加它? – 2014-11-23 16:09:22
@ThomasClayson:不是我所知道的。然而,有一個'RelativeLayout'的根可能是你的問題。嘗試將其封裝在其他某個東西(例如'FrameLayout')或切換到不同於'RelativeLayout'的不同容器類。 'RelativeLayout'只在知道它的父親時纔有效,在你的情況下,它沒有父親。 – CommonsWare 2014-11-23 16:12:34
完美。我添加了一個額外的FrameLayout作爲我的RelativeLayout的父視圖,它現在正在工作!非常感謝你。 – 2014-11-23 16:36:31