我以编程方式在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