我正在尝试使用编程方式创建的相对布局创建位图。 Realtivelayout按预期显示,但是当我尝试创建位图时,它返回非法参数异常,高度和宽度必须> 0 这就是我在做的事情
Bitmap.createBitmap(saveLayout.getWidth(),
saveLayout.getHeight(), Bitmap.Config.ARGB_8888);
任何指针?
修改:也添加了此代码:
ViewTreeObserver viewTreeObserver = saveLayout.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver
.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
saveLayout.getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
viewWidth = saveLayout.getWidth();
viewHeight = saveLayout.getHeight();
}
});
}
在上面给出的代码中onGlobalLayout()
似乎也从未被调用过。
答案 0 :(得分:1)
如果您是以编程方式创建saveLayout
,则可能会过早地询问其宽度和高度 。 (只是一个有根据的猜测,因为我看不到你的其余代码)
The reason why that createBitmap() call throws that exception is:
如果宽度或高度是<= 0
因此,请尝试推迟创建Bitmap
,直到显示视图后,或者找到另一种方法来计算宽度/高度。
This question has a few options/answers for how to defer this calculation to avoid 0 results