使用相对布局绘制位图会返回illegalargumentexception

时间:2013-02-19 01:44:07

标签: android layout bitmap relativelayout

我正在尝试使用编程方式创建的相对布局创建位图。 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()似乎也从未被调用过。

1 个答案:

答案 0 :(得分:1)

如果您是以编程方式创建saveLayout,则可能会过早地询问其宽度和高度 。 (只是一个有根据的猜测,因为我看不到你的其余代码)

See this explanation

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