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 に答える