Android-自定义视图和画布大小-鸡和蛋问题

Android-自定义视图和画布大小-鸡和蛋问题,android,android-canvas,Android,Android Canvas,我正在设计一个显示表达式的自定义视图(可以将其视为一个复杂的文本视图) 随着表达式的增长,我希望我的自定义视图能够扩展以适应它(就像wrap_content TextView一样) 当视图的内容发生更改时,我会缓冲一块画布,稍后由onDraw()绘制 缓冲是使用 Bitmap canvasBitmap = Bitmap.createBitmap(width, height , Config.RGB); Canvas canvas = new Canvas(canvasBitmap); canva

我正在设计一个显示表达式的自定义视图(可以将其视为一个复杂的文本视图)

随着表达式的增长,我希望我的自定义视图能够扩展以适应它(就像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()中计算之前,我需要它。
有没有办法在不指定画布边界的情况下创建画布,然后将其剪切到合适的大小?我不想先做这个过程来找出我需要的宽度,然后再运行它来创建一个大小合适的视图


如有任何建议,将不胜感激

使用
视图
onSizeChanged
回调创建和填充缓冲区


这在急切地缓冲数据和仅当视图大小合适时才延迟数据之间提供了良好的平衡。

使用
视图
onSizeChanged
回调来创建和填充缓冲区

这在急切地缓冲数据和仅当视图具有适当大小时才延迟数据之间提供了良好的平衡