1

式を表示するカスタム ビューを設計しています (複雑な TextView と考えることができます)。

式が大きくなるにつれて、それに合わせてカスタム ビューを拡張したいと考えています (wrap_content TextView のように)。

ビューのコンテンツが変更されると、後で描画されるキャンバスをバッファリングしますonDraw()

バッファリングは次を使用して行われます

Bitmap canvasBitmap = Bitmap.createBitmap(width, height , Config.RGB);
Canvas canvas = new Canvas(canvasBitmap);
canvas.drawText(pos,text, paint);
pos += paint.MesureText(text);
// and so on...
...
...

このプロセスの最後になって初めて、本当に必要なキャンバスの幅がわかりposますBitmap.createBitmap()。境界を指定せずにキャンバスを作成し、適切なサイズにカットする方法はありますか? 最初にプロセスを実行して必要な幅を見つけてから、再度実行して適切なサイズのビューを作成したくありません。

任意の提案をいただければ幸いです。

4

1 に答える 1

1

Viewsのコールバックを使用onSizeChangedして、バッファを作成および設定します。

これにより、データを積極的にバッファリングすることと、ビューのサイズが適切な場合にのみデータを延期することとの間でバランスが取れます。

于 2013-10-18T20:53:55.750 に答える