0

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

4

1 回答 1

1

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

看到这个解释

createBitmap() 调用引发该异常的原因是:

如果宽度或高度 <= 0

所以,尝试推迟创建Bitmap直到视图出现之后,或者找到另一种方法来计算宽度/高度。

这个问题有一些关于如何推迟这个计算以避免 0 结果的选项/答案

于 2013-02-19T01:48:55.707 回答